关于 SQL in, or 到底走不走索引的问题ss

    关于这个问题,一般我们都是在网上搜索答案但是搜索出来的几乎都说,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及其以下版本是不走索引的。

    关于性能优化的情况特别是数据量大的表,一定要考虑性能和索引的使用,这个影响到用户体验和你程序的好坏。

你可能感兴趣的:(SQL)