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

Вниз

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

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

Наверх





Память: 0.55 MB
Время: 0.003 c
2-1323333273
TComponent
2011-12-08 12:34
2012.03.25
Вопрос про WinExec


2-1323524421
oksana
2011-12-10 17:40
2012.03.25
функция


1-1289684800
antonn
2010-11-14 00:46
2012.03.25
Как отловить нажатие VK_SNAPSHOT?


15-1322653876
Jeer
2011-11-30 15:51
2012.03.25
TList vs TList<T>


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





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