У нас есть таблица CallLog в Microsoft SQL Server 2000 а>. Таблица содержит поле CallEndTime типа _ 1_, и это столбец индекса.
Обычно мы удаляем бесплатные звонки и составляем отчет со статистикой ежемесячной платы и отчет подробные сведения о звонках, все SQL использует CallEndTime
в качестве условия запроса в _3 _ пункт. Поскольку в таблице CallLog существует много записей, запросы выполняются медленно, поэтому мы хотим оптимизировать ее, начиная с индексации.
Вопрос
Будет ли он более эффективным, если запросить дополнительно проиндексированный VARCHAR
столбец CallEndDate? Такие как
-- DATETIME based query
SELECT COUNT(*) FROM CallLog WHERE CallEndTime BETWEEN '2011-06-01 00:00:00' AND '2011-06-30 23:59:59'
-- VARCHAR based queries
SELECT COUNT(*) FROM CallLog WHERE CallEndDate BETWEEN '2011-06-01' AND '2011-06-30'
SELECT COUNT(*) FROM CallLog WHERE CallEndDate LIKE '2011-06%'
SELECT COUNT(*) FROM CallLog WHERE CallEndMonth = '2011-06'