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.对于多列索引,不是使用的第
这种情况下定期做索引重建,是一种很好的解决办法吗?
问题内容: 我是PHP的新手,并且在会话方面更是初学者。我有index.php页面,用户可以在其中注册和登录。表单分别发布到validate.php和loginvalidate.php页面,以进行注册和登录。 加载时在index.php上出现以下错误: 1)注意:未定义的索引:已注册2)注意:未定义的索引:从未使用 我已经尝试过多种方式来修改我的文字,但是我从来没有解决错误。 Index.php
问题内容: 在文档(http://dev.mysql.com/doc/refman/6.0/en/drop- table.html )中未明确提及。我问是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,其中开发人员在删除表之前删除了所有索引,这似乎是不必要的。 问题答案: 是的,它确实。 但是,如果您具有诸如RESTRICT之类的外键约束来确保与其他表的参照完整性,则需要在删除或截断表之前
问题内容: 我在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
我使用LiquiBase3.4.1和MySQL56并通过spring boot运行Liquibase。 我有一个变更集,其中包括向现有表中添加一列。新的具有属性,并带有一个简单的select。 当我在该选择中出错时,变更集失败,迁移在该变更集停止。然而,新列被提交到数据库,但没有正确的值,而且,最糟糕的是,这个变更集没有标记为run!下一次运行迁移时,Liquibase再次尝试执行变更集,但失败了