我有一个庞大的数据库可从劳工统计部门从这里中的文件生成的失业数据的工作: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