Повышение производительности
Добавлено: 05 июл 2007, 18:10
Прочитал Хелен Борри про Firebird, но так и не
нашел ответа на свой вопрос.
Посему решил обратится к разработчикам, да и просто опытным пользователям FireBird.
Имеется табличка ~9 млн записей, из которых требуется постоянно выбирать 8-9тыс записей имеющих флажок (поле со значением 0), отсортированные по дате. Т.е. запрос вида:
SELECT FIELD1, FIELD2
FROM TABLE1
WHERE FIELD3 = 0
ORDER BY FIELD_DATE;
В связи с тем, что создавать индекс на часто повторяющихся полях не советуют, а в том поле всего два значения 0 и 1, то создавать индекс пока не хочу. С другой стороны, думаю над созданием составного индекса FIELD_DATE, FIELD3.
Естественно, прочитал в книге о том, что при использовании условия отбора по FIELD3 в данном случае индекс использоваться не будет, но при той же сортировке по FIELD_DATE этот индекс использоваться будет.
Теперь вопрос: будет ли использоваться этот индекс в моем запросе
SELECT FIELD1, FIELD2
FROM TABLE1
WHERE FIELD3 = 0
ORDER BY FIELD_DATE;
для а) отбора записей? б) сортировки записей? в) и то, и другое
Может предложите свой вариант увеличения производительности данного запроса?
нашел ответа на свой вопрос.
Посему решил обратится к разработчикам, да и просто опытным пользователям FireBird.
Имеется табличка ~9 млн записей, из которых требуется постоянно выбирать 8-9тыс записей имеющих флажок (поле со значением 0), отсортированные по дате. Т.е. запрос вида:
SELECT FIELD1, FIELD2
FROM TABLE1
WHERE FIELD3 = 0
ORDER BY FIELD_DATE;
В связи с тем, что создавать индекс на часто повторяющихся полях не советуют, а в том поле всего два значения 0 и 1, то создавать индекс пока не хочу. С другой стороны, думаю над созданием составного индекса FIELD_DATE, FIELD3.
Естественно, прочитал в книге о том, что при использовании условия отбора по FIELD3 в данном случае индекс использоваться не будет, но при той же сортировке по FIELD_DATE этот индекс использоваться будет.
Теперь вопрос: будет ли использоваться этот индекс в моем запросе
SELECT FIELD1, FIELD2
FROM TABLE1
WHERE FIELD3 = 0
ORDER BY FIELD_DATE;
для а) отбора записей? б) сортировки записей? в) и то, и другое
Может предложите свой вариант увеличения производительности данного запроса?