我有一个View,它使用2个select语句之间的联合。 select语句在桌面上,有数百万行,与4-5个小表连接。
有一个过程对视图有一些查询和一些where子句。
我认为在我的视图中使用Union ALl会比Union更快(结果保证不同),但如果我使用Union ALl而不是Union,我的过程需要相当长的时间。
我检查了查询计划,我注意到的主要区别是
- 当我在我的视图计划中使用Union时,包含所有搜索表。
- 当我在我的视图中使用Union all时,需要扫描所有表格(60%的费用)
- 查看select语句的条件为MainTable.Column<> 10,如果我使用Union计划显示为MainTable.Column> 10或MainTable.Column< 10.联盟所有计划显示<>条件。即使我明确表达了我的条件>或者< ,联盟所有计划显示为<>
醇>
如何知道为什么将联盟更改为联合所有计划生成的扫描而不是搜索。