首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sybase - showplan通过添加另一个要查询的表,大大减少了估计的I/O

sybase - showplan通过添加另一个要查询的表,大大减少了估计的I/O
EN

Stack Overflow用户
提问于 2009-08-22 15:26:23
回答 1查看 2.1K关注 0票数 0

查询的应用程序已经改变,但原理是相同的。

4表:

states -状态列表( store上的索引)商店-商店及其所处的状态( state,store上的单独索引) store_orders -将订单绑定到商店( store,order上的单独索引) order_statuses -有订单和状态( order,status上的单独索引)

我想要计算一个特定州的每个状态下有多少订单。

一个查询:

从存储区sto、store_order so、order_statuses os中选择sto.state = 'PA‘和sto.store = so.store order_statuses so.order = os.order group by os.order_status

在实际应用程序中,此处的显示计划返回的I/O估计约为500,000

但如果我这么做了:

从状态sta中选择os.order_status、count( os.order_status ),存储st0、store_order so、order_statuses os where sta.state = 'PA‘where sto.state = sta.state order_statuses sto.store = so.store和so.order = os.order group by os.order_status

I/O估计在2,000左右,我所做的更改查询的所有操作就是将states表连接到stores表,并在states而不是stores中指定确切的值。

不管我是指定一个显式的值,还是连接另一个带有显式值的表,DBM不是仍然需要对存储进行相同的搜索吗?

我正在尝试找出为什么估计的I/O要高得多。

我不是DBA,但我正在努力学习尽可能多的东西,因为我总是遇到这样的事情,而且我从来都不太确定为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-24 13:31:22

Lazy Bob,您是否也可以打开IO统计数据,然后将结果添加到问题中:

将统计信息设置为

showplan本身不会提供您在评论中报告信息

此外,请张贴准确的工作查询-理想情况下,格式正确。

您的查询是"where sta.state = 'PA‘where sto.state = sta.state“,显然这不是您可以运行的内容

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

https://stackoverflow.com/questions/1316192

复制
相关文章

相似问题

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