2010-05-17 61 views
0

我正在优化我的一些查询,并且我有一个查询指出: select * from SC where c_id =“+ c_id” ** SC **的模式看起来像这样:索引问题:使用WHERE子句选择*。在哪里以及如何创建索引

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) 

这样做的原因为了我立足于:

的其中CLA使用c_id中的选择,从而使其成为第一个排序顺序。 接着,DATE_START和date_stop到指定排序的“范围”,在这些参数 接着被定义,NT因为它会选择NT 接着r_t_id,因为它是为特定类型的我的r_t表的ID 最后是t_p,因为它只是一个信息。

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

接下来的事情之间10补充说明的是,该SC,在不同的查询,将数据插入的SC,和我知道有插入表的索引可能会导致成本低,但是我能否以某种方式创建一个有效实现这种性能的金色中端方法。

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

真诚

Mestika

回答

0

既然你是在谈论一个最大的1000行,不要”除非在生产中遇到问题,否则不要太在意索引。我从来没有见过一个1000行的桌子是一个问题。顺便说一句,你配置C_ID作为主键。因此,您不需要额外的索引,因为表已经使用主键进行了排序。