前言在Mysql执行中,查询效率在数据量小的情况下看不出来,如果数据量较大,超过了几万乃至几十万时,查询效率就尤为关键。我们知道,索引能够提高mysql的执行效率,但是如果语句使用不当,则可能导致系统放弃索引而使用全表扫描。在mysql执行中,有一些语句容易导致全表扫描,在使用过程中应该加以注意。union的使用导致Mysql全表扫码的几个地方1.百分号%的使用一个最常见的例子就是模糊查询,我们常常用到百分号,像selectidfromtabwherenamelike‘%c%’就会导致全表扫描。要想提高效果,可以考虑使用全文检索。2.或语句中or的使用例:selectidfromtabwherenum=10ornum=20在这条语句中or的出现会打破搜索索引而采用全表扫描。这种情况下,我们优化sql代码可以采用union来代替or。3.in和notin也会导致全表扫描注意in和notin在mssql分页中使用最多4.避免全表扫描的同时,应充分利用索引的优越性,在索引键上添加where和orderby能够有助于索引能力的提升。5.索引并不是越多越好,索引固然可以提高相应的select的效率,但同时也降低了insert及update的效率,在使用索引时一个表最好不要超过6个。结语这些问题如果不容易记住,就多参与项目多积累,任何事物都有两面性,有时数据量小的时候,即使全表扫描也未尝不可。
转载请注明:http://www.aierlanlan.com/rzfs/8011.html