• MySQL哪些查询符号会导致索引失效?
  • 发布于 2个月前
  • 261 热度
    0 评论
MySQL索引是一种用于快速访问数据库表中特定行的数据结构。索引可以大大提高查询效率,但同时也会增加写入数据的时间。下面是关于MySQL索引的一些语法、规则和失效情况的总结:

语法 

创建索引:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name [(length)],...)
删除索引:
DROP INDEX [IF EXISTS] index_name ON table_name
索引规则:
索引的字段应该选择在查询中经常使用的字段,而不是所有字段。
索引字段应该选择区分度高的字段,即取值范围小的字段。
不要在小表上创建索引,因为小表不需要使用索引来提高查询速度。
不要对经常变动的表创建索引,因为每次变动都需要更新索引,导致性能下降。
对于经常用于排序和分组的字段,应该创建索引。
对于经常用于连接查询的字段,应该创建索引。
对于经常用于 WHERE 子句的字段,应该创建索引。
对于经常用于 LIKE 子句的字段,应该使用全文索引。
对于经常用于空值判断的字段,应该使用 IS NULL 或 IS NOT NULL 来代替索引。

不要创建重复的索引,因为重复的索引会占用过多的磁盘空间和内存。


索引失效情况:
1.在索引字段上使用函数或表达式。
2.在索引字段上使用 NOT、<>、!=、<、>、<=、>= 等非等于操作符。
3.在索引字段上使用 LIKE 子句并使用通配符 % 开头。
4.在索引字段上使用 OR 连接多个条件。
5.在索引字段上使用 IN 子句并包含 NULL 值。
6.在索引字段上使用 ORDER BY 子句并与其他非索引字段混合排序。
7.在索引字段上使用 GROUP BY 子句并与其他非索引字段混合分组。
8.在 JOIN 语句中使用非索引字段进行连接。
9.在使用 UNION 或 UNION ALL 语句时,不要使用索引。
10.在使用子查询时,不要使用索引。

用户评论