首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL使用内存中的索引;为什么磁盘在运行?

MySQL使用内存中的索引;为什么磁盘在运行?
EN

Stack Overflow用户
提问于 2011-02-21 16:39:49
回答 1查看 219关注 0票数 0

我有800米的指数,并告诉MySQL使用1500米内存。启动MySQL后,它在Windows7 x64上使用1000米。

我想执行以下查询:

代码语言:javascript
复制
SELECT oo.* FROM table o 
LEFT JOIN table oo ON (oo.order = o.order  AND oo.type="SHIPPED") 
WHERE o.type="ORDERED" and oo.type IS NULL

这会发现所有尚未发运的物品。执行计划告诉我如下:

我的指数是:

  • type_order:多个索引,其中typeorder
  • order_typeorder作为第一个索引值,然后是type

因此,MySQL应该使用内存中的索引type_order,然后使用order_type索引选择少数条目。我预计只有大约1000个非发货项目,所以这个查询应该非常快,但它不是。磁盘正变得疯狂.

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2011-12-22 16:52:28

查询的名称是SELECT sometable.*,因此对于1000行匹配的行,表中的所有字段都会有1000个取回。是否将WHERE部件索引完全加载到ram中只会有帮助。数据字段仍需检索。很有可能,它们散落在磁盘上。因此,当然,磁盘将执行一千次小读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5068609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档