下一篇 » « 上一篇

如何编写高效的MySQL应用

作者:晏子    时间:2008-02-29    来源:    点击:4737    本文共10篇文章 字体:[ ]

查询处理

查询处理

如果你的查询复杂,MySQL用于精确确定如何获取数据的原则可能变得难于理解。幸运的是,有几个一般原则和一条命令允许你获得正在做什么的更好的理解。首先,原则是:

本文来自 www.444p.com

如果MySQL确定了简单地扫描全表更快些,则它L将不使用索引。一般地,如果一个索引告诉MySQL访问表中大概30%的行,它放弃索引并简单地执行全表扫描。
如果多索引可以用来满足查询,MySQL将使用最严格的一个 -- 即导致最少的行被提取的那个。
如果你正在选择的列是一个索引的所有部分,MySQL可以直接从索引中读取锁需的数据,绝不接触(或锁定)表本身。
当联结几个表时,MySQL将首先从可能返回最少行的表中读取数据。你指定表的次序可能与MySQL使用它们的次序不同,这也影响到最终返回给你的行的次序,所以如果你需要行以特定的次序出现,要保证在你的查询中使用一个ORDER子句。
已经说了很多了,重要的是认识到MySQL所做的一些决策实际上是基于猜测,就像人类进行大量猜测一样,偶尔也会出错。 php学习之家http://www.444p.com

如果你怀疑已经发生或只是想理解MySQL怎样处理一条查询,你可以使用EXPLAIN命令。简单地在你的查询前面加上EXPLAIN这个字,并要求MySQL执行它,MySQL不执行查询,相反将报告有助于查询的候选索引列表和所知道的有关它们的一切。

php学习之家

EXPLAIN输出的完整讨论参见MySQL参考手册。

  • 如何编写高效的MySQL应用 上一页 使用索引加快查询
  • 如何编写高效的MySQL应用 总目录
  • 如何编写高效的MySQL应用 下一页 不要过分使用索引
责任编辑:semirock
发表评论
密码: (游客不需要密码)
记住我【Alt+S 或 Ctrl+Enter 快速提交】

搜索工具


《PHP与MYsql》点击排行