当前位置: 首页 > 编程笔记 >

mysql的in会不会让索引失效?

楚意
2023-03-14
本文向大家介绍mysql的in会不会让索引失效?,包括了mysql的in会不会让索引失效?的使用技巧和注意事项,需要的朋友参考一下

mysql的in会让索引失效吗?不会! 看结果:

mysql> desc select * from tb_province where name in ('lily3', 'lily2', 'lily1');
+----+-------------+-------------+------------+------+---------------+------+---------+------+--------+----------+-------------+
| id | select_type | table    | partitions | type | possible_keys | key | key_len | ref | rows  | filtered | Extra    |
+----+-------------+-------------+------------+------+---------------+------+---------+------+--------+----------+-------------+
| 1 | SIMPLE   | tb_province | NULL    | ALL | NULL     | NULL | NULL  | NULL | 108780 |  30.00 | Using where |
+----+-------------+-------------+------------+------+---------------+------+---------+------+--------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> alter table tb_province add index g(name);
Query OK, 0 rows affected (0.29 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc select * from tb_province where name in ('lily3', 'lily2', 'lily1');
+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+
| id | select_type | table    | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra         |
+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+
| 1 | SIMPLE   | tb_province | NULL    | range | g       | g  | 34   | NULL |  3 |  100.00 | Using index condition |
+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+
1 row in set, 1 warning (0.00 sec)
mysql> 

顺便说下,in查出的结果,不一定按in排序, 如下:

mysql> select * from tb_province where name in ('lily3', 'lily2', 'lily1');
+----+-------+-------+------+------+------+------+------+------+------+------+------+------+------+
| id | name | score | x  | x1  | x2  | x3  | x4  | x5  | x6  | x7  | x8  | x9  | x10 |
+----+-------+-------+------+------+------+------+------+------+------+------+------+------+------+
| 1 | lily1 |   1 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |
| 2 | lily2 |   2 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |
| 3 | lily3 |   3 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |
+----+-------+-------+------+------+------+------+------+------+------+------+------+------+------+
3 rows in set (0.00 sec)
mysql> 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接

 类似资料:
  • 本文向大家介绍Mysql索引会失效的几种情况分析,包括了Mysql索引会失效的几种情况分析的使用技巧和注意事项,需要的朋友参考一下 索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:     1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)   注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引   2.对于多列索引,不是使用的第

  • 我有一条sql ,不知道为什么会导致索引失效 当我注释掉 select 后面的 pc.name 字段就可以使用索引。 不知道为什么,有没有大佬给我解惑一下。 测试环境中dev_device_log表中只有几百条数据的时候可以走索引,但是我从生产环境随意导出了几万条数据后就无法使用索引了。 不太理解为什么select 后面的字段会影响到索引情况 表结构: 我导出了一份几万条脱敏后的数据,但是不知道怎

  • 这种情况下定期做索引重建,是一种很好的解决办法吗?

  • 问题内容: 在文档(http://dev.mysql.com/doc/refman/6.0/en/drop- table.html )中未明确提及。我问是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,其中开发人员在删除表之前删除了所有索引,这似乎是不必要的。 问题答案: 是的,它确实。 但是,如果您具有诸如RESTRICT之类的外键约束来确保与其他表的参照完整性,则需要在删除或截断表之前

  • 问题内容: 我是PHP的新手,并且在会话方面更是初学者。我有index.php页面,用户可以在其中注册和登录。表单分别发布到validate.php和loginvalidate.php页面,以进行注册和登录。 加载时在index.php上出现以下错误: 1)注意:未定义的索引:已注册2)注意:未定义的索引:从未使用 我已经尝试过多种方式来修改我的文字,但是我从来没有解决错误。 Index.php

  • 问题内容: 我在MySQL 5.6中更改lower_case_table_names变量值时遇到问题…我做了所有在Windows xampp上更改lower_case_table_names = 2值的说明 。 Windows 7的默认值为“ 1”。我想将其切换为“ 2”。 尝试了几种方法,我所做的是: 编辑C:\ Program Files \ MySQL \ MySQL Server 5.6