看见网上很多关于使用了where1=1时,索引失效的博客,自己平时开发中也经常使用,索引对此进行了实际测试分析,结果如下。
使用explain分析索引使用情况发现并未影响使用索引
于是通过使用show warnings分析索引展示上一条SQL实际情况,发现sql语句中并未出现1=1的语句(show warnings:显示上一个语句的错误、警告以及注意)
结论:通过查询资料得知,mysql5.0以后,加入了sql自动优化,MySQL会自动对你的sql语句进行优化,例如像1=1这种sql,MySQL在进行自动优化的时候,会删除此语句,从而避免了sql进行全表扫描。