2013-04-09 29 views
0

使用:火鸟2.52添加索引以提高此查询的性能?

为以下查询SELECT的性能,做我需要在我的表中的其他字段的索引:

所需的查询:

select inventory_id, max(batch_no) from invty_batch 
where inventory_id = :I 
group by inventory_id 

表结构:

CREATE TABLE INVTY_BATCH (
    ROW_ID INTEGER NOT NULL, 
    INVENTORY_ID INTEGER NOT NULL, 
    BATCH_NO VARCHAR(8) NOT NULL, 
    INVTYRCPT_ID INTEGER NOT NULL, 
    UNITPRICE NUMERIC(12, 2) DEFAULT 0.0 NOT NULL); 


ALTER TABLE INVTY_BATCH ADD PRIMARY KEY (ROW_ID); 


CREATE UNIQUE INDEX IXINVTYIDBATCHNO ON INVTY_BATCH(INVENTORY_ID,BATCH_NO); 

在inventory_id和batch_no列上创建索引是否会使给定查询的性能受益?

+0

Firebird索引是定向的,在这种情况下,您可能受益于'INVTY_BATCH(INVENTORY_ID,BATCH_NO)'的降序索引;不确定。 – 2013-04-09 14:43:06

+0

@ Mark Roteveel如果@Steve F按INVENTORY_ID分组,不应该只在该字段上有索引吗? – 2013-04-14 11:08:41

回答

0

尝试为字段“batch_no”创建索引,因为查询正在此字段中执行搜索。 PS:使用desc索引,因为搜索的最大值为

+0

感谢您的回复。 1.我应该为Batch_No创建2个索引吗?一个ASC和一个DESC? 2.我是否也需要在Inventory_ID上创建索引? – 2013-04-10 13:42:21

+1

我的评论中建议的(降序)复合指数可能更好。 – 2013-04-10 14:41:12

+1

1 - 使用两个索引,一个用于字段Inventory_ID,另一个用于Batch_No DESC将是两个索引,因为它们是不同的扫描 – 2013-04-12 02:34:26