您好、欢迎来到现金彩票网!
当前位置:21点 > 子句 >

数据库:MySQL怎样优化WHERE子句

发布时间:2019-06-10 12:53 来源:未知 编辑:admin

  where优化主要是在SELECT中,因为他们最主要是在那里使用,但是同样的优化也可被用于DELETE和UPDATE语句。

  但请注意,下面的优化并不是完全的。MYSQL实施了许多优化,但我没时间全部测试.

  在一个单个表上的没有一个WHERE的COUNT(*)直接从表中检索信息。当仅使用一个表时,对任何NOT NULL表达式也这样做。

  无效常数表达式的早期检测。MySQL快速检测某些SELECT语句是不可能的并且不返回行。

  为每个子联结(sub join),构造一个更简单的WHERE以得到一个更快的WHERE计算并且也尽快跳过记录。

  与在一个UNIQUE索引、或一个PRIMARY KEY的WHERE子句一起使用的表,这里所有的索引部分使用一个常数表达式并且索引部分被定义为NOT NULL。

  对联结表的最好联结组合是通过尝试所有可能性来找到:(。如果所有在ORDER BY和GROUP BY的列来自同一个表,那么当联结时,该表首先被选中。

  如果有一个ORDER BY子句和一个不同的GROUP BY子句,或如果ORDER BY或GROUP BY包含不是来自联结队列中的第一个表的其他表的列,创建一个临时表。

  因为DISTINCT被变换到在所有的列上的一个GROUP BY,DISTINCT与ORDER BY结合也将在许多情况下需要一张临时表。

  每个表的索引被查询并且使用跨越少于30% 的行的索引。如果这样的索引没能找到,将使用一个快速的表扫描。

  在一些情况下,MySQL能从索引中读出行,甚至不用查询数据文件。如果索引使用的所有列是数字的,那么只有索引树被用来解答查询。

http://korinkorin.com/ziju/28.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有