【问题标题】:Index question: Select * with WHERE clause. Where and how to create index索引问题:Select * with WHERE 子句。在哪里以及如何创建索引
【发布时间】:2010-05-17 09:19:26
【问题描述】:

我正在优化我的一些查询,我有一个查询指出: 从 SC 中选择 * 其中 c_id ="+c_id" ** SC** 的架构如下所示:

SC (  c_id int not null,  date_start date not null, date_stop date not null, r_t_id int not null,  nt int,  t_p decimal,   PRIMARY KEY (c_id, r_t_id, date_start, date_stop));

我对如何创建索引的直接出价是按以下顺序覆盖索引:

INDEX(c_id, date_start, date_stop, nt, r_t_id, t_p)

我基于此订单的原因:

WHERE 子句从 c_id 中选择,从而使其成为第一个排序顺序。 接下来,date_start 和 date_stop 指定一个排序的“范围”,在这些参数中定义 接下来,nt 因为它会选择 nt 接下来是 r_t_id,因为它是我的 r_t 表的特定类型的 ID 最后是 t_p,因为它只是一个信息。

当它是一个 SELECT ALL 语句时,我不知道是否有必要以特定方式对其进行排序。 我应该说,SC 不是最大的表。我可以说它包含多少行,但估计可能在

接下来要补充的是,SC在不同的查询中,将数据插入到SC中,我知道有插入的表上的索引可以成本效益低,但我能否以某种方式创造一种黄金中间方式来提高这种性能。

不知道它是否有所不同,但我使用的是 IBM DB2 9.7 版数据库

真诚的

梅斯蒂卡

【问题讨论】:

    标签: database db2 indexing query-optimization


    【解决方案1】:

    由于您说的是最多 1000 行,所以不要对索引太费心,除非您在生产中遇到问题。我从来没有见过 1000 行表是个问题。顺便说一句,您将 C_ID 配置为主键。因此,您不需要额外的索引,因为该表已经使用主键进行了排序。

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 1970-01-01
      • 2018-08-16
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多