mysql索引问题

mysql索引问题,第1张

1.首选数据库都会有自动优化查询计划的能力,在语句一中,明显对seq进行了排序,而is_need_udate用in进行范围查询,使用index2,开销就会小很多,但是语句二中is_need_update没有这个了,所以才会使用index1.

2.所以建立的原则

2.1根据对应表查询频率最高的属性建立索引

2.2为经常需要排序,分组的字段建立索引

2.3尽量使用数据量少的索引

建议详细的使用方法看看书吧,数据库的优化是一门大学问,值得好好研究的

a.b.c三个分别建立索引,就是普通索引或单个索引。

(a.b.c)整体建立索引,就是复合索引。因为“最左前缀原则”所以其实相当于创建了(a,b,c),(a,b)、(c)三个索引。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。例:

select * from test where a='11'

select * from test where a='11' and b=1

select * from test where a='11' and b=1 and c=2.0

以上有索引

select * from test where b=11

select * from test where b=1 and c=2.0

以上无索引

OR 可能导致无法使用索引这个说法在这儿仍然是成立的:

第一个可以理解为:

WHERE index1=1 AND (index2=2 OR index1=3 AND index3=3)

所以是可能会使用索引index1 的。

第二个直接就是 两者条件的 OR

所以 无法使用索引


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7285797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存