加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL索引不会被用到的状况汇总

发布时间:2022-02-24 19:10:55 所属栏目:MySql教程 来源:互联网
导读:MySQL中索引的类型 一般可分为四类: 普通索引:最普通的索引 唯一索引:索引列的值必须唯一,但允许有空值 主键索引:一种特殊的唯一索引,不允许有空值 联合索引:索引列有多个字段,使用时需要满足最左前缀原则 普通索引 这是最基本的索引,它没有任何
      MySQL中索引的类型
      一般可分为四类:
 
普通索引:最普通的索引
唯一索引:索引列的值必须唯一,但允许有空值
主键索引:一种特殊的唯一索引,不允许有空值
联合索引:索引列有多个字段,使用时需要满足最左前缀原则
普通索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
 
1.创建索引
 
代码如下:
 
     CREATE INDEX indexName ON mytable(username(length));
      如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定 length,下同。
 
2.修改表结构
 
代码如下:
 
    ALTER mytable ADD INDEX [indexName] ON (username(length))
    创建表的时候直接指定
 
CREATE TABLE mytable(
 ID INT NOT NULL,
 username VARCHAR(16) NOT NULL,
 INDEX [indexName] (username(length))
);
删除索引的语法:
 
DROP INDEX [indexName] ON mytable;
唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
 
CREATE UNIQUE INDEX indexName ON mytable(username(length))
修改表结构:
 
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
创建表的时候直接指定:
 
CREATE TABLE mytable(  
ID INT NOT NULL,  
username VARCHAR(16) NOT NULL,  
UNIQUE [indexName] (username(length))  
);
主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
  
联合索引
 
为了形象地对比单列索引和组合索引,为表添加多个字段:
 
CREATE TABLE mytable(  
ID INT NOT NULL,  
username VARCHAR(16) NOT NULL,  
city VARCHAR(50) NOT NULL,  
age INT NOT NULL
);
为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。就是将 name, city, age 建到一个索引里:
 
代码如下:
 
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
索引用不上的情况
索引不是每次都可以生效的,如果我们操作不对,那么很有可能是走全表扫描而不是走的索引,Explain 中的 possible_key、key_len 以及 key 参数都可以分析我们的 SQL 语句是否用到了索引。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读