关于这个问题,一般我们都是在网上搜索答案但是搜索出来的几乎都说,in、or s 使用后不走索引,最开始我也是一直这样认为的,但是最近自己在测试时就找到它到底走不走索引了。自己测试时使用 mysql 5.6,在测试中 sql 语句 最前面 都加有 explain 关键字,explain SELECT * FROM t_supplier_hr WHERE id > 9865 or supplierid > 30 or tttd ='7sd5' 在这个语句中 3个字段都是有索引的,查询下来是 没有走索引的,但把sql 改为 explain SELECT * FROM t_supplier_hr WHERE id > 9865 or supplierid > 30 它就走了索引,具体是什么原因走了索引 这确实没有找到原因,只能说 相对较短的 or 语句是走索引的,多个就不一定了,在使用前最好还是加上 explain 来试试到底走不走索引。而对于 in 进过多次测试 是走索引的。
在网上也有搜到过这个也有mysql 的版本有一定关系, MySQL 4.1 以上版本的 IN 是走索引的, 但4.0及其以下版本是不走索引的。
关于性能优化的情况特别是数据量大的表,一定要考虑性能和索引的使用,这个影响到用户体验和你程序的好坏。
本文通过实验探讨了MySQL中OR与IN操作符在不同情况下的索引使用情况,发现较短的OR语句可能利用索引,而IN操作符则通常能有效利用索引。文章还讨论了不同MySQL版本间的行为差异,并强调了性能优化的重要性。

6577

被折叠的 条评论
为什么被折叠?



