非结构化查询比集群、散列集群和索引执行得更好?

Non-structured Query performs better than on clustered, hash-clustered and indexed?

我使用以下查询作为一些非结构化数据(无索引、无聚类等)的基线,与我向连接列添加索引或添加表时相比,该查询在非结构化数据上的表现更好到集群或哈希集群。我觉得我的基线查询并不理想,我的任务是进行基线查询并找到一个性能最好的结构,但我尝试过的所有结构的性能都比非结构化的差。我可以对我的基线查询做些什么来至少找到一种结构,它比非结构化有明显的改进吗?

查询:

SELECT Cust_name, price
FROM Customer, Sales
WHERE price > 1000
AND num_sold > 10
AND Sales.Cust_id = Customer.Cust_id;

此查询返回 150k 行中的 108k+ 行。

以下是测试的痕迹:

非结构化:

在连接列 Sales.Cust_id 和 Customer.Cust_id 上添加了索引:

将两个表都添加到集群索引为 Cust_id 的集群:

将两个表都添加到具有 10000 个键的哈希簇中:

你 select 72% 的数据。我认为任何结构都不会对这种情况有很大帮助。非结构化的似乎是最好的。

我能想到的唯一改进方法是:

  1. 按任一价格 num_sold 或两者对销售额 table 进行分区。
  2. 使用实例化视图预加入 tables,and/or 限制所需的列,and/or 限制所需的行。
  3. 对销售使用一种压缩形式 table(这可能只有在您使用直接路径批量插入销售时才有价值)。
  4. 也许可以在您使用的销售额 table 的列上尝试压缩索引,也可以在客户 (cust_id, cust_name) 上使用索引,希望快点全索引扫描。