我有一张格式如下的表格。而且我也知道最常用的sql,所以我的问题是如何在我的表上创建索引,因此这个SQL查询可以有最好的性能。顺便说一句,我的数据库是sybase ASE 12.5。
表t: bu,name,date,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
感谢您的任何建议。
答案 0 :(得分:1)
基本上你需要为WHERE和GROUP BY子句使用的字段添加索引,所以我会使用代码,bu和name。如何创建索引:
CREATE INDEX index_name ON table_name (column_name);
在你的情况下:
CREATE INDEX idate ON t (date);
答案 1 :(得分:1)
Matino建议的日期索引将确保Sybase只搜索导致结果的行。 由于每行中的所有字段都在查询中使用,因此任何其他索引都无济于事。 加快查询速度的唯一方法是在日期索引中包含所有列。但那通常是矫枉过正的!