2013-04-09 55 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