Конференция "Прочее" » Поиск в индексированной базе: что быстрее [D7, Access]
 
  • Alex_C (25.11.11 10:04) [0]
    Что быстрее работает: запрос SELEСЕ FROM WHERE или метод Locate?
  • Inovet © (25.11.11 10:19) [1]
    > [0] Alex_C   (25.11.11 10:04)

    Вопрос неправильный. Для locate надо вытащить ВСЕ записи на клиента в ОЗУ, он может и треснуть от этого - и канал загрузишь, и ОЗУ. А вот SELEСT FROM WHERE отработает на сервере по индексам, если есть подходящие, или полным перебором. Клиенту остаётся только получить результат.
  • Медвежонок Пятачок © (25.11.11 10:31) [2]
    Что быстрее работает: запрос SELEСЕ FROM WHERE или метод Locate?

    А разве не очевидно?
    Для того, чтобы случился локейт, надо сначала чтобы случился селект по которому будет сделан локейт.
  • Anatoly Podgoretsky © (25.11.11 10:47) [3]
    > Alex_C  (25.11.2011 10:04:00)  [0]

    Измерить, кстати можешь сам
  • sniknik © (25.11.11 10:50) [4]
    что быстрее движется: поезд или человек в нем?

    вопрос не корректный в принципе, хотя... в принципе можно настроить режим когда Locate использует индексы базы, и только для jet.
    (по аналогии с поездом делаем условие, пассажир поезда идет по перрону, поезд двигается в пределах вокзала)
  • sniknik © (25.11.11 10:54) [5]
    кстати "индексированная база"... это как? может таблица? рекордсет образ таблицы/части ее на клиенте, индексов с собой "не тянет", но может построить его в у себя, на локали, в памяти.
  • Alex_C (25.11.11 11:10) [6]
    Да вопрос задал не корректно. Поправлюсь:
    есть очень принципиальный участок программы, в котором скорость поиска очень важна. По этому есть 2 варианта поиска по таблице:
    1. SELECT FROM WHERE
    2. Где-то в начале программы определить SELECT * FROM, а потом уже только делать Locate. Естественно что нужно найти только 1 запись - таблица индексирована и совпадения по индексу не допускаются.
  • clickmaker © (25.11.11 11:13) [7]
    > [6] Alex_C   (25.11.11 11:10)

    Если данные меняются редко, а поиск выполняется часто, то, может, и имеет смысл сделать что-то типа локального кэша, выбрав сначала все записи.
    Но в общем случае оптимальней вариант 1
  • Виталий Панасенко (25.11.11 11:43) [8]

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

    Не согласен. Как-то писал одну программулину, в которой нужно было искать инфу из справочников для одного большого рекордсета. изначально делал мелкими Select... работало, но очень долго. Переделал на "выбрал все из справочника"+ locate - время сократилось в ... даже трудно сказать, во сколько раз. Были часы, стало 10-15 минут. СУБД MS SQL 2000
  • clickmaker © (25.11.11 12:06) [9]
    > Переделал на "выбрал все из справочника"+ locate

    я об этом и говорил. Справочники меняются редко, их можно и нужно кэшировать
  • Anatoly Podgoretsky © (25.11.11 12:08) [10]
    > Виталий Панасенко  (25.11.2011 11:43:08)  [8]

    А у меня мелкими Select < 10 ms
  • sniknik © (25.11.11 12:23) [11]
    "мелкими Select" это неправильно, т.к. множественно число..., должен быть 1 Select который возвращает нужное, дальше поиск по нему не требуется, делается просто обработка в цикле (если нужно по записьно).
  • sniknik © (25.11.11 12:31) [12]
    Alex_C   (25.11.11 11:10) [6]
    1 вариант серверный, т.е. будет работать со многими клиентами. (логику имею ввиду а не движок)
    2 вариант чисто локальный, и в в принципе бессмысленный... т.к. говоришь поиск по ключу... тогда быстрее всего будет использовать серверный курсор (аналог прямой работы, как файл сервер, для аксесс) и использовать процедуры индексного поиска (локейт тоже использует индекс, если он есть, но определение есть он или нет тоже время занимает, ну и не помню я на который он ориентируется, скорее всего на "в рекордсете", не учитывая "особых" настроек)
  • Alex_C (26.11.11 11:23) [13]

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


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


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


    Это какие?
  • sniknik © (26.11.11 12:21) [14]
    Seek

    только смотри, переход на файл серверную логику, с компонентами-технологией "заточенной" под клиент серверную, это не просто "функцию вызвать" это меняет идеологию работы с базой.
    причем т.к. здесь это(файл сервер) сделано в виде исключения то знать тебе нужно и то и то, и правила и исключения , иначе будешь постоянно "а че оно глючит/не работает? я все же правильно сделал".
    а ты вон даже справку не читаешь...
  • Stvty (26.11.11 19:13) [15]
    Индексация базы? Наверное таблицы? Если есть индекс, то надо использовать Seek
    http://articles.org.ru/cfaq/index.php?qid=735
    http://articles.org.ru/docum/locate.php
  • Alex_C (26.11.11 23:26) [16]

    > Seek


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


    Я тебя удивлю - я не просто читаю, я очень внимательно читаю. Ибо Seek - не работает кроме как на Table - читай документацию. Пробовал уже его. Выдало ошибку - внимательно прочел документацию - так и есть.
    Без обид - правда читал документацию и Seek пробовал.
    Может чего не так делал?
  • Alex_C (26.11.11 23:33) [17]
    Текущий поставщик не поддерживает необходимый интерфейс для функции Index.
    Ответ на использование Seek.
  • sniknik © (27.11.11 00:30) [18]
    > читай документацию.
    пинг понг какой то...
    мне как бы уже не нужно, в этом... по этому, я как бы уже сам могу написать.

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

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

    > Может чего не так делал?
    а ты сомневаешься?
  • Alex_C (29.11.11 10:37) [19]

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


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

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

    Ты про это: http://rx4hx.qrz.ru/ ?
    Не показывай никому этот сайт..
  • Anatoly Podgoretsky © (29.11.11 11:05) [21]
    Поздно мы уже увидели.
    Мигает, ползет, а зачем не понятно.
    Впечатление или никакое или отвратно.
  • Alex_C (29.11.11 11:10) [22]

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


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

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


    Сайт делался в 2002 по моему году в течение 10 мин)))
  • Alex_C (29.11.11 11:12) [24]

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


    А ты сделай что нибудь бесплатное для многих - тогда и поговорим)))
    Я сделал.
  • Anatoly Podgoretsky © (29.11.11 11:18) [25]
    > Alex_C  (29.11.2011 11:10:22)  [22]

    Первое что на скрине бросается в глаза и очень неприятно, это разделение
    даты на части
  • Alex_C (29.11.11 11:19) [26]
    Да и еще: хочу выразить ОЧЕНЬ большую признательность данному форуму!
    Не могу не вспомнить пользователя Сергей М. - который помог мне сделать телнет. Дело в том, что я в своей программе принципиально по минимому использую сторонние компоненты - все что можно делаю на Win API. В результате все работает на порядок быстрее.
    Мой совет всем кто кодит на Дельфи: думайте сами)))
  • Alex_C (29.11.11 11:20) [27]

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


    Да, да . Это одно из ОБЯЗАТЕЛЬНЫХ условий лога... Ох сколько гемора это принесло)))
  • Alex_C (29.11.11 11:21) [28]

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

    А прикиньте как фильтацию по времени геморно делать))) Но надо))
  • Anatoly Podgoretsky © (29.11.11 11:22) [29]
    > Alex_C  (29.11.2011 11:10:22)  [22]

    Боятся обидеть, но все таки немного смогли, это по поводу справочников, а
    ведь предупреждали
  • Anatoly Podgoretsky © (29.11.11 11:23) [30]
    > Alex_C  (29.11.2011 11:12:24)  [24]

    А за это никто тебя и не ругает, это наоборот хорошо, но вот качество не
    выдерживает критики, при том я верю, что другие еще хуже. Всем вам не
    хватает ни знания, ни опыта.
  • Alex_C (29.11.11 11:25) [31]

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


    Вы не поняли. Справочники надо обновлять КАЖДЫЙ день. Справочники есть - обновлять каждый день - нет возможности. Зато я поступил просто - все можно брать из инета!
  • Alex_C (29.11.11 11:28) [32]

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


    По этому я здесь!!!!
    Все что Вы пишите - правда! Ну блин нет у меня друзей программистов!!!!
    Ругайте! Я не обижаюсь - я учусь! Я не молод - но учиться никогда не поздно, тем более если есть желание!
  • Alex_C (29.11.11 11:35) [33]

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


    Пользователю пофиг как ты делаешь - пользователю нужна
    1. Безглючность
    2. Скорость.
    В моей программе это есть.
  • Омлет © (29.11.11 11:45) [34]

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

    Не хочу. Я жадный и ленивый.
  • Alex_C (29.11.11 11:53) [35]

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


    А я жадный, но не ленивый. )))
    Зарабатываю я и так нормально.  Программа для меня - отдых. Лекарство от скуки)))
  • Anatoly Podgoretsky © (29.11.11 11:59) [36]
    > Alex_C  (29.11.2011 11:25:31)  [31]

    Само наличие искуственных справочников, там где они не нужны, типа связи 1-1
  • Alex_C (29.11.11 12:08) [37]

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


    Вот! Вот чего я пока не могу понять. Делаешь по книге - все работает медленно. Делаешь как не должно быть - все на порядок быстрее.
    Справочники.. Вот смотрите: есть лог, есть необходимость узнать куда DX слать карточку. Скорость тут не нужна - зачем справочник который нужно каждый день обновлять - ведь одним и тем же позывным могут работать разные экспедиции. Лучше скачать актуальные данные из инета!
  • Alex_C (29.11.11 12:10) [38]
    В общем давайте еще критикуйте)))
    Благодаря ВАМ всем программа лучше становится!
  • Омлет © (29.11.11 12:16) [39]

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

    Так закинь ссылочку в потрепаться (Прочее). Тему назови "Очередная порка".
    Но сначала переделай сайт, а то монитору больно его показывать.
  • Anatoly Podgoretsky © (29.11.11 12:45) [40]
    > Alex_C  (29.11.2011 12:08:37)  [37]

    Поле примечание
    Позывные более наглядный случай 1-1 и очень неудобные и медленные запросы
    Диапазон и модуляция могут быть справочником, поскольку 1-М
  • Anatoly Podgoretsky © (29.11.11 12:46) [41]
    > Омлет  (29.11.2011 12:16:39)  [39]

    Это правильно, я разрешаю сделать дубль, поскольку это не относится к Дельфи
  • Inovet © (29.11.11 14:42) [42]
    > [20] Омлет ©   (29.11.11 10:54)
    > Не показывай никому этот сайт..

    Ну а что, нормальная домашняя страничка, зачем сайт прямо полноценный, надо будет так сделает.
  • Alex_C (29.11.11 14:58) [43]

    > в потрепаться (Прочее)


    Нет я против. Я не "потрепаться" хочу. Вот зачем так


    > "Очередная порка".


    я что - что то не так спрашиваю? Я делаю.


    > Но сначала переделай сайт


    Возьми и переделай. Мне уже много раз предлагали - и делали. Блин ну нет у меня времени сайтом заниматься. Да и зачем? Денег я с этого не имею. Мои пользователи и так любят мою программу.
  • Alex_C (29.11.11 15:02) [44]

    > Это правильно, я разрешаю сделать дубль, поскольку это не
    > относится к Дельфи


    Анатолий, давайте все же к делу подходить ну... как это сказать... без всяких "особых мнений".
    Зачем форум? Чтоб на нем задавали вопросы. Я же вопросы по теме задаю?
    И ответы тут замечательные - они не просто говорят как сделать, они заставляют ДУМАТЬ!!! А это куда как важнее!!
  • Anatoly Podgoretsky © (29.11.11 15:12) [45]
    Впопросы по программированию на Дельфи давно кончились, идет трепотня и порка. Ну ладно не хочешь сам, тогда я перемещу весь мусор, а ведь по доброму хотел.
  • Anatoly Podgoretsky © (29.11.11 15:15) [46]
    Вопросов "по делу" только один - нулевой, и то с натяжкой, это больше по базе.
  • Омлет © (29.11.11 15:26) [47]

    > Alex_C   (29.11.11 14:58) [43]

    Ты просто не в теме.
    Я предлагал простое - в конференции "Прочее" (которая когда-то давно называлась "Потрепаться") создать тему, в которой дать ссылку на свою программу и предложение поругать/похвалить/покритиковать всем желающим.
    А такие темы ласково называют поркой, хотя совсем необязательно, что будут только ругать ))
  • Alex_C (29.11.11 15:32) [48]

    >  такие темы ласково называют поркой,


    Окейно. Я не знаю почему, но в среде программистов (нет и в другой среде тоже есть такое), почему то очень любят "мокать лицом в грязь". Ребят ну я ж вам всем уже сказал - я не профи. Я к вам за советом пришел. И ОЧЕНЬ много хороших советов тут получил!
    Зачем тут показывать что ВЫ умнее меня? Я умнее ВАС в своем деле!
    Ребят ну замечательный форум! Давайте будем немного добрее друг к другу!!
  • Омлет © (29.11.11 15:44) [49]
    Полноте, Алексей Владимирович. Мне лишь сайт не понравился (потому что я сайты сам делаю). Никто не собирался Вас макать в грязь или еще куда.
    Весь последний диалог возник в силу недопонимания. Простите, если что не так.
    А всех фриварщиков и опенсорщиков люблю и уважаю.
  • Alex_C (29.11.11 15:50) [50]

    > Простите, если что не так.


    Я к сожалению не знаю Вашего имени и отчества, но уважаемый Омлет - я Вам и всем пользователям данного форума БЛАГОДАРЕН!
    Вы не даете готовых решений - что ПРАВИЛЬНО! Вы - даете направление куда искать и думать!
    И то что сайт Вам не понравился - он мне самому не нравится))))  Думать надо самому - за тебя никто не сделает)))
    Еще много раз буду задавать тут вопросы)))
  • Jeer © (29.11.11 21:13) [51]

    > Еще много раз буду задавать тут вопросы)))


    Валяй.
    Как уже бывший коротковолновик - чем смогу, помогу.
 
Конференция "Прочее" » Поиск в индексированной базе: что быстрее [D7, Access]
Есть новые Нет новых   [134431   +15][b:0.001][p:0.002]