Выборка по дате и времени

Модераторы: kdv, CyberMax

Ответить
bratslav
Сообщения: 5
Зарегистрирован: 26 апр 2010, 06:56

Выборка по дате и времени

Сообщение bratslav » 15 дек 2010, 10:11

Привет всем!!!

Изначально при проектировании БД в таблице ZAKAZ было поле DATA типа DATE
Далее клиент захотел видеть время заказа (таксист).
Я ввел доп. поля TIMES типа TIME и DATATIME типа TIMESTAMP COMPUTED BY (DATA+TYME)
Создан индекс по полям DATA и TYME

Обращение к таблице через запрос:
select ....
from ZAKAZ
where (DATATIME >= '01.10.2010 09:00:00') and (DATATIME <= '31.10.2010 09:00:00')

Скорость выполнения запроса выросла до критичного значения.

Как мне оптимизировать обращение к таблице?

Спасибо.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Выборка по дате и времени

Сообщение Dimitry Sibiryakov » 15 дек 2010, 14:40

А зачем ты ввёл дополнительное поле вместо изменения типа уже существующего? Т.е. сам себе подложил свинью.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Выборка по дате и времени

Сообщение kdv » 16 дек 2010, 10:06

Как мне оптимизировать обращение к таблице?
что-нибудь на сайте прочитать про оптимизатор. При таком использовании computed by столбца никакие индексы использоваться не будут. Вы и сами могли бы увидеть это в плане запроса.

bratslav
Сообщения: 5
Зарегистрирован: 26 апр 2010, 06:56

Re: Выборка по дате и времени

Сообщение bratslav » 16 дек 2010, 12:47

Я уже понял про проблему с COMPUTED
Есть ли возможность поправить "малой кровью" без перестроки всей таблицы?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Выборка по дате и времени

Сообщение Dimitry Sibiryakov » 16 дек 2010, 14:39

ALTER TABLE ZAKAZ ALTER DATA TYPE TIMESTAMP;

bratslav
Сообщения: 5
Зарегистрирован: 26 апр 2010, 06:56

Re: Выборка по дате и времени

Сообщение bratslav » 16 дек 2010, 15:32

Dimitry Sibiryakov писал(а):ALTER TABLE ZAKAZ ALTER DATA TYPE TIMESTAMP;
I am thank you!!!

Ответить