MySQL数据库优化中要用到哪些语句? |
本文标签:MySQL数据库优化 以下的文章主要介绍的是MySQL数据库优化的实际操作以及相关推荐,前面我们也讲过一些相关的优化操作策略,我们今天就一起来看看MySQL数据库优化中Group BY 语句、 Order By语句 等 。 优化GROUP BY语句 默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序 。这与在查询中指定ORDER BY col1,col2...类似 。因此,如果显式包括一个包含相同的列的ORDER BY子句,则对MySQL的实际执行性能没有什么影响 。 如果查询包括GROUP BY 但用户想要避免排序结果的消耗,则可以指定ORDER By NULL禁止排序,例如: 引用
MySQL数据库优化ORDER BY语句 在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序 。WHERE 条件和 ORDER BY使用相同的索引,并且ORDER BY的顺序和索引顺序相同,并且ORDER BY的字段都是升序或者都是降序 。 例如: 引用
但是以下的情况不使用索引: 引用
ORDER by的字段混合ASC 和 DESC
用于查询行的关键字与ORDER BY 中所使用的不相同
对不同的关键字使用ORDER BY
MySQL数据库优化嵌套查询 MySQL4.1开始支持SQL的子查询 。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个查询结果作为过滤条件用在另一个查询中,使用子查询可以一次性地完成多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且些起来也很容易 。但是,有些情况下,子查询可以被更有效的连接(JOIN)替代 。 引用
优化OR条件 对于含有OR的查询子句,如果要利用索引,则OR之间的每个条件列都必须用到索引;如果没有索引,则考虑增加索引 。 使用SQL提示 SQL 提示(SQL HINT)是MySQL数据库优化数据库的一个重要手段,简单来说就是在SQL语句中加入一些人为的提示来达到优化的操作的目的 。 引用
这个语句将强制MySQL生成一个临时结果集 。只要临时结果集生成后,所有表上的锁定均被释放 。这能在遇到表锁定问题时或者要花很长时间将结果传给客户端时所帮助,因为可以尽快释放锁资源, 下面是一些在MySQL中常用的SQL提示 。 引用 1. USE INDEX
2. IGNORE INDEX 如果用户只是单纯地想让MySQL忽略一个或者多个索引,则可以使用IGNORE INDEX 作为HINT 3. FORCE INDEX 为强制MySQL使用一个特定的索引,可在查询中使用FORCE INDEX作为HINT 。例如当不强制使用索引的时候,因为id的值都是大于0的,因为MySQL会默认进行全表扫描,而不使用索引 。例如: 引用
但是,当使用FORCE INDEX进行提示时,即便使用索引的效率不是很高,MySQL还是选择使用了索引,这是MySQL留给用户的一个自行选择执行计划的权利 。加入FORCE INDEX提示后在执行上面的SQL 引用
|