搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?

从今天开始,我们开始 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),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值