2011-09-05 88 views
0

我有一個表格格式如下。我也知道最常用的SQL,所以我的問題是如何在我的表上創建索引,因此這個SQL查詢可以獲得最佳性能。順便說一下,我的數據庫是sybase ASE 12.5。如何爲我的表創建索引?

表T: BU,姓名,日期,score_a,score_b

SQL:

SELECT bu, name, max(score_a), max(score_b) 
FROM 
t 
WHERE date > '20110101' AND date < '20110901' 
GROUP BY bu, name 

感謝您的任何建議。

回答

1

基本上你需要添加索引到由WHERE和GROUP BY子句使用的字段,所以我會使用代碼,bu和名稱。如何創建一個索引:
CREATE INDEX index_name ON table_name (column_name);
你的情況:
CREATE INDEX idate ON t (date);

+0

因此只在'日期'上創建一個索引?這是一張大桌子,最大計算量是否也很耗時? – taox

+0

爲什麼不嘗試基準測試(使用EXPLAIN)並檢查查詢的時間?嘗試使用:0索引,1日期索引,3日期索引,bu,名稱,所有字段5個索引 – matino

1

通過馬蒂諾建議的日期上指數將確保的Sybase只打有助於結果行。 由於查詢中使用了每行的所有字段,所以其他任何索引都無濟於事。 加快查詢速度的唯一方法是將日期索引中的所有列包括在內。但那通常會矯枉過正!