Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
15-1205062287
NL
2008-03-09 14:31
2008.04.20
mkv - что за расширение?


2-1206554828
redlord
2008-03-26 21:07
2008.04.20
блокировка вставки текста в tedit


3-1196229406
ROMQA
2007-11-28 08:56
2008.04.20
DELPHI SQL запрос в файл!


2-1206519877
Andrewtitoff
2008-03-26 11:24
2008.04.20
Как удалить файл из проекта Delphi 2007


15-1204929909
oxffff
2008-03-08 01:45
2008.04.20
Всех дам с 8 Марта поздравляем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский