Как создать индекс для моей таблицы? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть таблица с форматом ниже.И я также знаю наиболее распространенный используемый SQL-файл, поэтому мой вопрос заключается в том, как создать индекс для моей таблицы, таким образом, этот SQL-запрос может иметь лучшую производительность.Кстати, мой БД - Sybase ASE 12.5.

Таблица t: бу, имя, дата, оценка_a, оценка_b

SQL:

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

Спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Индекс по дате, предложенный Матино, обеспечит попадание Sybase только в строки, способствующие получению результата.Поскольку в запросе используются все поля из каждой строки, любые другие индексы не помогут.Единственный способ ускорить выполнение запроса - включить все столбцы в индекс даты.Но это обычно было бы излишним!

1 голос
/ 05 сентября 2011

В основном вам нужно добавить индексы к полям, используемым в выражении WHERE и GROUP BY, поэтому я бы пошел с кодом, бу и именем. Как создать индекс:
CREATE INDEX index_name ON table_name (column_name);
В вашем случае:
CREATE INDEX idate ON t (date);

...