我有一個龐大的數據庫可從勞工統計部門從這裏中的文件生成的失業數據的工作:SQL優化查詢
ftp://ftp.bls.gov/pub/time.series/la/
我建幾個查詢拉起數據部分,並且在爲所有表添加索引後,我可以想到許多數據仍然需要幾秒或更長時間。
我的第一個查詢返回有失業數據可用的狀態下的所有子區域。將索引添加到Series表和Area表後,執行時間從2秒變爲0.9秒,但我無法將其降低。我認爲DISTINCT需要這麼長時間,但有必要保留記錄以避免重複。
SELECT DISTINCT series.area_code, area.area_text FROM Alabama
LEFT JOIN series ON Alabama.series_id=series.series_id
LEFT JOIN area ON series.area_code=area.area_code
WHERE area.area_type_code != 'A';
我的第二個查詢,這實際上拉起每個領域的數據,僅在0.3秒,即使它拉遠記錄:
USE unemploymentdata;
SELECT DISTINCT * FROM Alabama
LEFT JOIN series ON Alabama.series_id=series.series_id
LEFT JOIN area ON series.area_code=area.area_code
WHERE area.area_type_code != 'A'
AND area.area_code = 'CA011420'
AND year > 2000;
我對數據庫非常小知識並在這一點上查詢優化 - 任何人都可以給我任何指針在我的查詢,或者在數據庫本身添加索引等,以加快我的交易?
**請包括執行計劃**以及 – ajreal 2011-01-10 07:20:51
你能發佈索引你爲每個表格創建的,還有「解釋選擇...」的結果?另外,當條件更受限制,使用不同的數據庫時,爲什麼第二個查詢會提取更多數據? – Jaydee 2011-01-10 11:12:34