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