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

Вниз

Поиск в индексированной базе: что быстрее   Найти похожие ветки 

 
Alex_C   (2011-11-25 10:04) [0]

Что быстрее работает: запрос SELEСЕ FROM WHERE или метод Locate?


 
Inovet ©   (2011-11-25 10:19) [1]

> [0] Alex_C   (25.11.11 10:04)

Вопрос неправильный. Для locate надо вытащить ВСЕ записи на клиента в ОЗУ, он может и треснуть от этого - и канал загрузишь, и ОЗУ. А вот SELEСT FROM WHERE отработает на сервере по индексам, если есть подходящие, или полным перебором. Клиенту остаётся только получить результат.


 
Медвежонок Пятачок ©   (2011-11-25 10:31) [2]

Что быстрее работает: запрос SELEСЕ FROM WHERE или метод Locate?

А разве не очевидно?
Для того, чтобы случился локейт, надо сначала чтобы случился селект по которому будет сделан локейт.


 
Anatoly Podgoretsky ©   (2011-11-25 10:47) [3]

> Alex_C  (25.11.2011 10:04:00)  [0]

Измерить, кстати можешь сам


 
sniknik ©   (2011-11-25 10:50) [4]

что быстрее движется: поезд или человек в нем?

вопрос не корректный в принципе, хотя... в принципе можно настроить режим когда Locate использует индексы базы, и только для jet.
(по аналогии с поездом делаем условие, пассажир поезда идет по перрону, поезд двигается в пределах вокзала)


 
sniknik ©   (2011-11-25 10:54) [5]

кстати "индексированная база"... это как? может таблица? рекордсет образ таблицы/части ее на клиенте, индексов с собой "не тянет", но может построить его в у себя, на локали, в памяти.


 
Alex_C   (2011-11-25 11:10) [6]

Да вопрос задал не корректно. Поправлюсь:
есть очень принципиальный участок программы, в котором скорость поиска очень важна. По этому есть 2 варианта поиска по таблице:
1. SELECT FROM WHERE
2. Где-то в начале программы определить SELECT * FROM, а потом уже только делать Locate. Естественно что нужно найти только 1 запись - таблица индексирована и совпадения по индексу не допускаются.


 
clickmaker ©   (2011-11-25 11:13) [7]

> [6] Alex_C   (25.11.11 11:10)

Если данные меняются редко, а поиск выполняется часто, то, может, и имеет смысл сделать что-то типа локального кэша, выбрав сначала все записи.
Но в общем случае оптимальней вариант 1


 
Виталий Панасенко   (2011-11-25 11:43) [8]


> clickmaker ©   (25.11.11 11:13) [7]

Не согласен. Как-то писал одну программулину, в которой нужно было искать инфу из справочников для одного большого рекордсета. изначально делал мелкими Select... работало, но очень долго. Переделал на "выбрал все из справочника"+ locate - время сократилось в ... даже трудно сказать, во сколько раз. Были часы, стало 10-15 минут. СУБД MS SQL 2000


 
clickmaker ©   (2011-11-25 12:06) [9]

> Переделал на "выбрал все из справочника"+ locate

я об этом и говорил. Справочники меняются редко, их можно и нужно кэшировать


 
Anatoly Podgoretsky ©   (2011-11-25 12:08) [10]

> Виталий Панасенко  (25.11.2011 11:43:08)  [8]

А у меня мелкими Select < 10 ms


 
sniknik ©   (2011-11-25 12:23) [11]

"мелкими Select" это неправильно, т.к. множественно число..., должен быть 1 Select который возвращает нужное, дальше поиск по нему не требуется, делается просто обработка в цикле (если нужно по записьно).


 
sniknik ©   (2011-11-25 12:31) [12]

Alex_C   (25.11.11 11:10) [6]
1 вариант серверный, т.е. будет работать со многими клиентами. (логику имею ввиду а не движок)
2 вариант чисто локальный, и в в принципе бессмысленный... т.к. говоришь поиск по ключу... тогда быстрее всего будет использовать серверный курсор (аналог прямой работы, как файл сервер, для аксесс) и использовать процедуры индексного поиска (локейт тоже использует индекс, если он есть, но определение есть он или нет тоже время занимает, ну и не помню я на который он ориентируется, скорее всего на "в рекордсете", не учитывая "особых" настроек)


 
Alex_C   (2011-11-26 11:23) [13]


> использовать серверный курсор


Это имеется ввиду CursorLocation := clUseServer?


>  использовать процедуры индексного поиска


Это какие?


 
sniknik ©   (2011-11-26 12:21) [14]

Seek

только смотри, переход на файл серверную логику, с компонентами-технологией "заточенной" под клиент серверную, это не просто "функцию вызвать" это меняет идеологию работы с базой.
причем т.к. здесь это(файл сервер) сделано в виде исключения то знать тебе нужно и то и то, и правила и исключения , иначе будешь постоянно "а че оно глючит/не работает? я все же правильно сделал".
а ты вон даже справку не читаешь...


 
Stvty   (2011-11-26 19:13) [15]

Индексация базы? Наверное таблицы? Если есть индекс, то надо использовать Seek
http://articles.org.ru/cfaq/index.php?qid=735
http://articles.org.ru/docum/locate.php


 
Alex_C   (2011-11-26 23:26) [16]


> Seek


> а ты вон даже справку не читаешь..


Я тебя удивлю - я не просто читаю, я очень внимательно читаю. Ибо Seek - не работает кроме как на Table - читай документацию. Пробовал уже его. Выдало ошибку - внимательно прочел документацию - так и есть.
Без обид - правда читал документацию и Seek пробовал.
Может чего не так делал?


 
Alex_C   (2011-11-26 23:33) [17]

Текущий поставщик не поддерживает необходимый интерфейс для функции Index.
Ответ на использование Seek.


 
sniknik ©   (2011-11-27 00:30) [18]

> читай документацию.
пинг понг какой то...
мне как бы уже не нужно, в этом... по этому, я как бы уже сам могу написать.

> внимательно прочел документацию - так и есть.
так и нет.
или внимательность исправляй. или справку свою в утиль, и новую ищи.

> Без обид
какие обиды? просто, раз не хочешь, то прекращаем. если спрашиваешь, то слушай, если вместо этого начинаешь "лечить" отвечающих, ну значит сам разберешься.
а то стараешься, чуть ли не лекцию про идеологию написал, а он единственное что понял, так это про справку. а функцию как есть бездумно "запуздырил"...

> Может чего не так делал?
а ты сомневаешься?


 
Alex_C   (2011-11-29 10:37) [19]


> просто, раз не хочешь, то прекращаем.


Нет уж))) Как говорится - хера с два)))
Я между прочим уже практически всю программу под SQL переделал - а это много)))
Просто я не студент, которому нужно курсовой сдать и забыть. Я не просто делаю программу, я хочу еще понять ПОЧЕМУ так а не иначе. От сюда и вопросы.
И именно благодаря форуму все получается классно))) Как переделаю окончательно - могу ссылку на свой сайт дать - посмотрите к чему вы все тут присутсвующие руку приложили))) Поверьте - стыдно не будет.


 
Омлет ©   (2011-11-29 10:54) [20]


> Как переделаю окончательно - могу ссылку на свой сайт дать
> - посмотрите к чему вы все тут присутсвующие руку приложили)))

Ты про это: http://rx4hx.qrz.ru/ ?
Не показывай никому этот сайт..


 
Anatoly Podgoretsky ©   (2011-11-29 11:05) [21]

Поздно мы уже увидели.
Мигает, ползет, а зачем не понятно.
Впечатление или никакое или отвратно.


 
Alex_C   (2011-11-29 11:10) [22]


> Ты про это: http://rx4hx.qrz.ru/ ?
> Не показывай никому этот сайт..


Угу. Сайт делать времени нет. Слишком много пожеланий от пользователей - все время свободное на программу уходит.
Учитывая что других программ аналогично моей много и что я других сумел ВОПРЕКИ всему потеснить... Я молодец))) Читать тут
http://forum.qrz.ru/thread19958-142.html
да кстати те кто хочет чего плохого сказать - говорите))) Это на меня позитивно действует))


 
Alex_C   (2011-11-29 11:10) [23]


> Мигает, ползет, а зачем не понятно.


Сайт делался в 2002 по моему году в течение 10 мин)))


 
Alex_C   (2011-11-29 11:12) [24]


> Не показывай никому этот сайт..


А ты сделай что нибудь бесплатное для многих - тогда и поговорим)))
Я сделал.


 
Anatoly Podgoretsky ©   (2011-11-29 11:18) [25]

> Alex_C  (29.11.2011 11:10:22)  [22]

Первое что на скрине бросается в глаза и очень неприятно, это разделение
даты на части


 
Alex_C   (2011-11-29 11:19) [26]

Да и еще: хочу выразить ОЧЕНЬ большую признательность данному форуму!
Не могу не вспомнить пользователя Сергей М. - который помог мне сделать телнет. Дело в том, что я в своей программе принципиально по минимому использую сторонние компоненты - все что можно делаю на Win API. В результате все работает на порядок быстрее.
Мой совет всем кто кодит на Дельфи: думайте сами)))


 
Alex_C   (2011-11-29 11:20) [27]


> это разделение
> даты на части


Да, да . Это одно из ОБЯЗАТЕЛЬНЫХ условий лога... Ох сколько гемора это принесло)))


 
Alex_C   (2011-11-29 11:21) [28]


> это разделение
> даты на части

А прикиньте как фильтацию по времени геморно делать))) Но надо))


 
Anatoly Podgoretsky ©   (2011-11-29 11:22) [29]

> Alex_C  (29.11.2011 11:10:22)  [22]

Боятся обидеть, но все таки немного смогли, это по поводу справочников, а
ведь предупреждали


 
Anatoly Podgoretsky ©   (2011-11-29 11:23) [30]

> Alex_C  (29.11.2011 11:12:24)  [24]

А за это никто тебя и не ругает, это наоборот хорошо, но вот качество не
выдерживает критики, при том я верю, что другие еще хуже. Всем вам не
хватает ни знания, ни опыта.


 
Alex_C   (2011-11-29 11:25) [31]


> Боятся обидеть, но все таки немного смогли, это по поводу
> справочников, а
> ведь предупреждали


Вы не поняли. Справочники надо обновлять КАЖДЫЙ день. Справочники есть - обновлять каждый день - нет возможности. Зато я поступил просто - все можно брать из инета!


 
Alex_C   (2011-11-29 11:28) [32]


> но вот качество не
> выдерживает критики, при том я верю, что другие еще хуже.
>


По этому я здесь!!!!
Все что Вы пишите - правда! Ну блин нет у меня друзей программистов!!!!
Ругайте! Я не обижаюсь - я учусь! Я не молод - но учиться никогда не поздно, тем более если есть желание!


 
Alex_C   (2011-11-29 11:35) [33]


> Боятся обидеть, но все таки немного смогли, это по поводу
> справочников, а
> ведь предупреждали


Пользователю пофиг как ты делаешь - пользователю нужна
1. Безглючность
2. Скорость.
В моей программе это есть.


 
Омлет ©   (2011-11-29 11:45) [34]


> Alex_C   (29.11.11 11:12) [24]
> А ты сделай что нибудь бесплатное для многих - тогда и поговорим)))

Не хочу. Я жадный и ленивый.


 
Alex_C   (2011-11-29 11:53) [35]


> Не хочу. Я жадный и ленивый.


А я жадный, но не ленивый. )))
Зарабатываю я и так нормально.  Программа для меня - отдых. Лекарство от скуки)))


 
Anatoly Podgoretsky ©   (2011-11-29 11:59) [36]

> Alex_C  (29.11.2011 11:25:31)  [31]

Само наличие искуственных справочников, там где они не нужны, типа связи 1-1


 
Alex_C   (2011-11-29 12:08) [37]


> Само наличие искуственных справочников, там где они не нужны,
>  типа связи 1-1


Вот! Вот чего я пока не могу понять. Делаешь по книге - все работает медленно. Делаешь как не должно быть - все на порядок быстрее.
Справочники.. Вот смотрите: есть лог, есть необходимость узнать куда DX слать карточку. Скорость тут не нужна - зачем справочник который нужно каждый день обновлять - ведь одним и тем же позывным могут работать разные экспедиции. Лучше скачать актуальные данные из инета!


 
Alex_C   (2011-11-29 12:10) [38]

В общем давайте еще критикуйте)))
Благодаря ВАМ всем программа лучше становится!


 
Омлет ©   (2011-11-29 12:16) [39]


> В общем давайте еще критикуйте

Так закинь ссылочку в потрепаться (Прочее). Тему назови "Очередная порка".
Но сначала переделай сайт, а то монитору больно его показывать.


 
Anatoly Podgoretsky ©   (2011-11-29 12:45) [40]

> Alex_C  (29.11.2011 12:08:37)  [37]

Поле примечание
Позывные более наглядный случай 1-1 и очень неудобные и медленные запросы
Диапазон и модуляция могут быть справочником, поскольку 1-М



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

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

Наверх




Память: 0.57 MB
Время: 0.007 c
15-1322553415
_qwerty_
2011-11-29 11:56
2012.03.25
вопрос к знатокам английского


2-1323120597
mnj
2011-12-06 01:29
2012.03.25
Использование TFileStream для текста и бинарного файла


2-1323420041
bestolkov
2011-12-09 12:40
2012.03.25
Отображение графики


15-1322574300
alexdn
2011-11-29 17:45
2012.03.25
Логический блок div


11-1242542465
hroot
2009-05-17 10:41
2012.03.25
Anchors &amp; wsMaximized