MySQL之索引(index)
程序员文章站
2024-01-20 19:02:10
...
MySQL提供有如上图的存储引擎,一般情况下,我们使用的默认的存储引擎都是InnoDB,在MySQL中我们可以用命令:
SHOW ENGINES;
来查询数据库存储引擎的相关情况,如下图结果:
了解完相关的存储引擎,下面就要开始了解索引是个什么东西了,按照我的理解来说,在mysql如果没有主键外键或者索引的话,你检索某一条具体的数据都将是一条一条往下匹配的,这样的话在数据量庞大了以后,你在想要找到特定的数据,将会耗费无比巨大的时间代价,据说设置索引的查询速度能够比没有设置索引的查询速度提升100倍以上。
下面是有关于索引使用的一些例子:
实际操作如下:
接下来就是设计索引的一些原则,总的来说,我理解的索引的原则是这样的,寻找最有效,最精简,最少的列来表示某一条特定的数据,也就是设置索引的原则了:
接下来是有关于MySQL支持的两类索引BTREE和HASH索引的一些区别:
使用索引的总结:
如何判断索引的使用情况:
MySQL对索引的优化内容:
1.对于创建的多列索引,只要查询中用到了最左边的列,索引一般就会被使用,但是假如说只用到非左边的列那么索引就不会被使用。
2.对于like的查询,后面如果是敞亮并且只有%不在第一个字符,索引才可能会被使用。
3.如果对大的文本进行搜索,使用全文索引而不用like '%....%'。
4.如果列名是索引,使用 cloumn_name is null将使用到索引。
5.使用or的时候如果or左边是索引列而右边不是索引列,这样还是不会使用索引。
6.如果列是字符串类型,那么一定要在where条件中把字符常量值用引号引起来,否则的话即便这个列上有索引,mysql也不会用到,而是进行全部扫描。
索引的内容基本就是这样了,记录下来以后复习的时候也好理解。
推荐阅读
-
警惕 Oracle 索引优化时陷阱之无效的索引范围扫描(INDEX RANGE SCAN)导致的全表扫描
-
深入理解Oracle索引(1):INDEX SKIP SCAN 和 INDEX RANGE SCAN
-
MySQL之索引(index)
-
Oracle-index索引解读
-
《Oracle Database编程指南》20:索引(Index)
-
20180331:Oracle中的视图(view)、索引(index)、约束(constraint)、序列(sequence)
-
MySQL索引失效问题
-
记一次MySql单列索引和联合索引的使用区别
-
从Oracle到PostgreSQL:Storage Index 特性 vs BRIN 索引
-
Mysql索引原理以及索引优化