我们知道每张表一般都会有自己的主键,mysql会在主键上建立一个索引,这就是主键索引。主键是具有唯一性并且不允许为NULL,所以他是一种特殊的唯一索引。一般在建立表的时候选定。
复合索引也叫组合索引,指的是我们在建立索引的时候使用多个字段,例如同时使用身份证和手机号建立索引,同样的可以建立为普通索引或者是唯一索引。
复合索引的使用复合最左原则。举个例子 我们使用 phone和name创建索引。
-- 创建索引的基本语法 CREATE INDEX indexName ON table(column1(length),column2(length)); -- 例子 CREATE INDEX idx_phone_name ON user(phone,name);
我们看下面的查询语句,
SELECT * FROM user_innodb where name = '程冯冯'; SELECT * FROM user_innodb where phone = '15100046637'; SELECT * FROM user_innodb where phone = '15100046637' and name = '程冯冯'; SELECT * FROM user_innodb where name = '程冯冯' and phone = '15100046637';
三条sql只有 2 、 3、4能使用的到索引idx_phone_name,因为条件里面必须包含索引前面的字段才能够进行匹配。而3和4相比where条件的顺序不一样,为什么4可以用到索引呢?是因为mysql本身就有一层sql优化,他会根据sql来识别出来该用哪个索引,我们可以理解为3和4在mysql眼中是等价的。
需要经常where的字段
需要join连表的字段
需要排序的字段
需要group by的字段
查看索引方式:
SHOW INDEX FROM table_name;
使用INFORMATION_SCHEMA:
MySQL中的INFORMATION_SCHEMA数据库存储了关于数据库和表的元数据信息。你可以查询该数据库来获取索引的详细信息。执行以下命令,可以查看表的索引信息:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = 'database_name' AND table_name = 'table_name';
其中,database_name是你要查看索引的数据库名,table_name是你要查看索引的表名。
除了以上方法外,还可以通过使用MySQL的命令行工具或者可视化工具,如Navicat、phpMyAdmin等来查看表的索引信息。这些工具通常都提供了直观且易于理解的界面来展示索引信息,方便用户进行查询和分析。
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net