Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 13:22   #1
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
Счастье Индекс не срабатывает

База Oracle, 300000 записей. Построен индекс по полю to_date.
Но при ниже приведённом запросе индекс не срабатывает.

Код:
select * from Table_NAme a 
where a.date > to_date(20010101,'yyyymmdd') and a.date <= to_date(20090101,'yyyymmdd')
Срабатывает лишь при одинаковых датах.

Если кто знает — подкиньте идею.
Получил помощь — отблагодарил.

Последний раз редактировалось mihali4; 24.11.2009 в 15:09.
GenniY вне форума Ответить с цитированием
Старый 24.11.2009, 13:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А не проще ORDER BY воспользоваться? Или в индексе что-то сложное выражено?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2009, 13:46   #3
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

Цитата:
А не проще ORDER BY воспользоваться? Или в индексе что-то сложное выражено?
Это всего лишь часть запроса, сам запрос большой.
Не в ORDER BY дело. Нужно обязательно так как написал.
Меня интересует с чего не срабатывает индекс?

Индекс только на один столбец.
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 24.11.2009, 15:02   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так и не понял - при чем тут индекс?
Может так?
Код:
select * from Table_NAme a 
where a.date > '01.01.2001' and a.date <= '01.01.2009'
mihali4 вне форума Ответить с цитированием
Старый 24.11.2009, 15:05   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от GenniY Посмотреть сообщение
Построен индекс по полю to_date.
ен видно в запросе такого поля

Цитата:
Сообщение от GenniY Посмотреть сообщение
Но при ниже приведённом запросе индекс не срабатывает.

Код:
select * from Table_NAme a 
where a.date > to_date(20010101,'yyyymmdd') and a.date <= to_date(20090101,'yyyymmdd')
логично
ведь запрос возвращает вообще всю таблицу
сам посмотри на условия отбора по дате и убедись что ты написал "достать все записи больше 01.01.2009 и меньше либо равно 01.01.2009"

а надо хотя бы так
Код:
select * 
from Table_NAme a 
where 0=0
   and a.date > to_date(20010101,'yyyymmdd') - 1 
   and a.date <= to_date(20090101,'yyyymmdd')
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод в верхний индекс первого символа Aleksandr Общие вопросы Delphi 10 12.09.2011 23:39
паскаль.найти индекс элемента массива belka1 Помощь студентам 6 13.11.2009 19:40
Не срабатывает макрос... Busine2009 Фриланс 6 14.08.2009 10:14
Не срабатывает OnCloseQuery Arkuz Общие вопросы Delphi 4 31.07.2009 01:32
Составной индекс в ClientDataSet JOHNKZ1 БД в Delphi 0 23.02.2009 18:44