Главная страница
    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.47 MB
Время: 0.034 c
15-1204824115
Пробегал...
2008-03-06 20:21
2008.04.20
Определение модуля, вызвавшего функцию


15-1204504933
Германн
2008-03-03 03:42
2008.04.20
Луна жестко стелет


15-1204495643
Пробегал...
2008-03-03 01:07
2008.04.20
Подсчет количества вхождений потоков


15-1203743813
@!!ex
2008-02-23 08:16
2008.04.20
gmail.com в рекламном блоке показал ссылку, ведующую лохотрон...


4-1187348602
Ricks
2007-08-17 15:03
2008.04.20
Странное ограничение....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский