当前位置:网站首页>MySQL 索引使用有哪些注意事项呢?(从六个方面回答)
MySQL 索引使用有哪些注意事项呢?(从六个方面回答)
2022-07-26 00:03:00 【橘子ꦿ.๓】
1.什么是索引
索引是一种特殊的数据库结构,有数据表中的一列或者多列组合而成,可以快速查询数据表中的值,相当于图书的目录,根据目录的页码快速找到所需内容
2.建立索引的原则
查询更快,占用空间小
1.定义主键的数据列一定要建立索引
2.定义有外键的数据列一点要建立索引
3.对于经常查询的数据列建立索引
4.对于需要在指定范围内的快速或频繁查询的数据列
5.经常用where字句中的数据列
6.经常出现在关键字order by、group by、distinct后面的字段,建立索引。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
7.查询中很少涉及的列,重复值比较多的列不要建立索引
8.对于定义为text、image和bit、的数据类型的列不要建立索引
9.经常存取的列不要建立
10.限制索引数目,索引数一般不超过3个,最多不超过5个。索引提高了访问速度,但太多索引会影响数据的更新
3.有那些索引,分别解释
1.普通索引:普通索引是最基本的索引,它没有任何限制,值可以为空,仅加速查询
2.唯一性索引:唯一索引与普通索引类似,不同:索引列的值必须唯一,允许有空值。如果是组合索引,则列值得组合必须唯一
3.全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配
4.单列索引(主键):是一种特殊的唯一索引,一个表只能有一个主键,不允许有空置。
5.多列索引(组合):在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
4.那些情况下索引无法起作用
1.对列进行计算或者是使用函数,则该列索引失效
2.不匹配数据类型
3.where语句中使用 IS NULL 或者IS NOT NULL
4.使用了反向操作
5.使用link操作
6.在where中使用OR时,有一个列没有索引,那么其他列的所有将不起作用
5.使用索引的注意事项
1.不要再列上使用函数和进行运算,引起失效
2.尽量避免使用or来连接条件,导致索引失效进行全表扫描
3.in走索引,not in索引失效
4.单列索引和复合索引。尽量使用复合索引,而少使用单列索引
5.如果mysql评估使用索引比全表更慢。则不使用索引
6.范围查询右边的列,不能使用索引
7.尽量使用覆盖索引,避免select * 尽量使用覆盖索引(只访问索引的查询(引列完全包含查询列)),减少select *。查询列超过索引列也会降低效率
8.最左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列
9.is Null,is Not NULL有时索引失效
10.以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,引失效。
11.全值匹配,对索引中所有列都指定具体值。改情况下,索引生效,执行效率高。
6.什么情况下需要使用索引
(1)列经常被用于where条件中
(2)列中有大量的空值
(3)表几乎没有被修改
(4)数据量很大,只有2-4%的数据被选出来
边栏推荐
猜你喜欢

Compile live555 with vs2019 in win10

Observer model of behavioral model

07_ UE4 advanced_ MP value of firing fireball and mechanism of attacking blood deduction

Appium中控件元素封装类梳理

Js理解之路:Js常见的6中继承方式

Leetcode169-多数元素详解

Binary tree - 530. Minimum absolute difference of binary search tree

Leetcode200 - find detailed explanation of the number of islands

行为型模式之迭代器模式

Sort fake contacts
随机推荐
Unexpected dubug tricks
Backtracking - 77. combination
Redirection and request forwarding
C language actual combat guessing game
二叉树——617. 合并二叉树
解决不挂载数据的页面刷新
Are you still using your browser's own bookmarks? This bookmark plugin is awesome
Typescript TS basic knowledge and so on
Exercise (3) create a list set (both ArrayList and LinkedList)
滑动窗口_
LeetCode 沙胡同系列 -- 63. 不同路径 II
Basic syntax of MySQL DDL, DML and DQL
Binary tree - 617. Merge binary tree
回溯——17. 电话号码的字母组合
Part 74: overview of machine learning optimization methods and superparameter settings
1223. Dice simulation range DP
FreeRTOS个人笔记-消息队列
FreeRTOS个人笔记-信号量
Solve the problem of rapid index bar extrusion
Exercise (1) create a set C1 to store the elements "one", "two", "three"“