从今天开始,我们开始 MySQL 索引实战内容,具体介绍一下 MySQL 索引的用法。
首先介绍一下索引的相关语法:
索引语法
-- 创建索引
CREATE INDEX indexName ON table_name (column_name);
ALTER table tableName ADD INDEX indexName(columnName);
-- 删除索引
DROP INDEX [indexName] ON mytable;
复制代码
语法还是非常简单的,没什么太多说的,遵循相关语法规定即可,当然你也可以使用相关的一些 MySQL 客户端管理工具去创建,比如 Navicat 等。
下边介绍一下具体的一些使用语法:
索引使用
今天的实战内容以如下表为例:
CREATE TABLE `tb_item` (
`id` bigint NOT NULL COMMENT '书籍id,同时也是书籍编号',
`title` varchar(100) NOT NULL COMMENT '书籍名称',
`sell_point` varchar(500) DEFAULT NULL COMMENT '书籍卖点',
`price` bigint NOT NULL COMMENT '书籍价格,单位为:分',
`num` int NOT NULL COMMENT '库存数量',
`barcode` varchar(30) DEFAULT NULL COMMENT '书籍条形码',
`image` varchar(500) DEFAULT NULL COMMENT '书籍图片',
`cid` bigint NOT NULL COMMENT '所属类目,叶子类目',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '书籍状态,1-正常,2-下架,3-删除',
`created` datetime NOT NULL COMMENT '创建时间',
`updated` datetime NOT NULL COMMENT '更新时间',
`upload_id` bigint DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
KEY `status` (`status`),
KEY `updated` (`updated`),
KEY `tb_item_title_price_num` (`title`,`price`,`num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='书籍表';
复制代码
InnoDB 索引因为使用了 B+ 树数据结构,所以在使用上我们就需要了解这种结构,具体你可以回顾我前边这篇文章:MySQL InnoDB 索引模型。
也正是因为使用了这种结构,所以在使用上我们需要遵循一些原则,才能让索引不失效。
最左前缀法则
如果你是建立联合索引,那么我们在使用查询条件的时候,需要从这个索引的最左列开始,并且不跳过索引中的列;如果跳跃某一列,那么就会造成索引部分失效;比如你建立的联合索引字段是 (a, b , c),