Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

SQL- запрос   Найти похожие ветки 

 
Ganda ©   (2007-11-27 08:42) [0]

имеется большая таблица есть такое поле Field1 оно инедксировано и имеет тип символьный, в день к этому полю обращаются по не скольку тысяч раз! надо узнать его масксимальное значение в определенном диапозоне
я делаю так:
select max(Field1) from main where Field1 between "A0000001" and "A9999999"

ответа в первом обращении приходится ждать где то с полминуты если не больше!
Теперь вопрос можно ли как то подругому получить максимальное значение этого поля и в заданном диапозоне?!


 
Виталий Панасенко(дом)   (2007-11-27 08:45) [1]

Попробуй построить DESC индекс по этому полю.


 
ganda ©   (2007-11-27 08:55) [2]


> Виталий Панасенко(дом)   (27.11.07 08:45) [1]


Спасибо помогло ))


 
Sergey13 ©   (2007-11-27 08:56) [3]

> [0] Ganda ©   (27.11.07 08:42)

Индекса по функции в полторашке вроде нет, значит возможно следует попробовать создать числовой аналог поля, заполняемый тригерами, и искать по нему.


 
Правильный_Вася   (2007-11-27 10:40) [4]


> Попробуй построить DESC индекс по этому полю.

а в чем фокус?


 
Кщд ©   (2007-11-27 10:43) [5]

>а в чем фокус?
оптимизация для max


 
Anatoly Podgoretsky ©   (2007-11-27 11:36) [6]


> а в чем фокус?

Другой план выполнения, почти сразу дает результат, не надо просматривать предыдущие 10 миллионов записей.


 
Правильный_Вася   (2007-11-27 12:04) [7]

не понял
двоичное дерево все равно с середины начинается
и в любом случае нет полного просмотра


 
Кщд ©   (2007-11-27 12:31) [8]

Правильный_Вася   (27.11.07 12:04) [7]
либо взять одно значение сразу, либо использовать range scan
разница заметна


 
Правильный_Вася   (2007-11-27 12:51) [9]


> либо взять одно значение сразу

и как ты возьмешь одно значение сразу, если ты не знаешь, какое оно?
все равно проход по дереву нужен, особенно если есть ограничивающее условие


 
Anatoly Podgoretsky ©   (2007-11-27 14:48) [10]

> Правильный_Вася  (27.11.2007 12:51:09)  [9]

С чего ты взял, что в плане какое то дерево, там обычный index scan


 
Правильный_Вася   (2007-11-27 15:21) [11]


> С чего ты взял, что в плане какое то дерево, там обычный index scan

ну, так индекс и есть древовидная структура, так и именуемая b-tree index
больше - направо, меньше - налево, затем на следующем уровне иерархии то же самое


 
Виталий Панасенко(дом)   (2007-11-27 15:40) [12]


> Правильный_Вася   (27.11.07 15:21)


FireBird до 2,0 включительно не умеет быстро вычислять МАКС без индекса по убыванию.. Я не в давался в дебри, то ли на  IBASE.RU, то ли на FireBirdSQL.ORG описано, с чем это связано(или глянуть в каталог DOC устновленного сервера, не помню точно.. Но вроде русскоязычный текст был. И что есть несколько вариантов).. Вроде бы обещали решить проблему в 3,х


 
Anatoly Podgoretsky ©   (2007-11-27 17:02) [13]

> Правильный_Вася  (27.11.2007 15:21:11)  [11]

По индексу будет делаться эта громадная выборка, потом будет проводиться сравнение. Если сравнение по индексу, то будет 10 000 000 сравнений от мин до макс, дешевле сделать выборку и по ней последовательно пройти, а вот тут то и пригодится DESC

И чего там спорить, тут надо план смотреть.



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
3-1195737356
dik
2007-11-22 16:15
2008.04.20
Пустые блобы


3-1196068794
Paradise
2007-11-26 12:19
2008.04.20
Перекрытие временных периодов


15-1204686710
Slider007
2008-03-05 06:11
2008.04.20
С днем рождения ! 5 марта 2008 среда


2-1206467560
Adios
2008-03-25 20:52
2008.04.20
хендл процесса


15-1204502666
Поп Гапон
2008-03-03 03:04
2008.04.20
А как китайцы набирают текст