SQL索引
SQL索引
是mysql用来提高查询效率的数据结构
mysql5.5之后innoDB引擎,支持BTree(默认),Hash两种方式
mysql在使用like查询的时候只有使用后面的%时,才会使用到索引。
CREATE INDEX命令:
CREATE INDEX index_name ON table_name;
单列索引
单列索引基于单一的字段创建
CREATE INDEX index_name ON table_name (column_name);
唯一索引
唯一索引不止用于提升查询性能,还用于保证数据完整性。唯一索引不允许向表中插入任何重复值。
CREATE UNIQUE INDEX index_name on table_name (column_name);
组合索引
聚簇索引在表中两个或更多的列的基础上建立。(最左匹配原则)
CREATE INDEX index_name on table_name (column1, column2);
创建单列索引还是聚簇索引,要看每次查询中,哪些列在作为过滤条件的 WHERE 子句中最常出现。
如果只需要一列,那么就应当创建单列索引。如果作为过滤条件的 WHERE 子句用到了两个或者更多的列,那么聚簇索引就是最好的选择。
隐式索引
隐式索引由数据库服务器在创建某些对象的时候自动生成。例如,对于主键约束和唯一约束,数据库服务器就会自动创建索引。
DROP INDEX 命令
索引可以用 SQL DROP 命令删除。删除索引时应当特别小心,数据库的性能可能会因此而降低或者提高。
DROP INDEX table_name.index_name;
索引的数据结构
索引采用B+Tree,更稳定,每次需要执行三次操作,而且数据区的值是相指,有利与排序输出
联合索引
范围之后全失效
把选择性较好的列,放在where的最左边
覆盖索引
通过索引项的信息可以直接返回所查询的列,则该索引称之为查询SQL的覆盖索引。
尽量使用覆盖索引,因为他能加快我们的查询速度,不需要回表操作。
三星索引
- where后面的匹配环境的索引关键字列越多越好,扫描的数据约精准,越少越好。
- 避免再次排序
- 尽可能的应用覆盖索引。减少回表操作。
本文链接:
/archives/sql-suo-yin
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
郭远的博客空间!
喜欢就支持一下吧
打赏
微信
支付宝