|
|
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
Помогите, есть таблица ---------------------------- nomer | fm | im | ot ----------------------------- есть индекс FIO с выражением - fm+im+ot +----------------------------------------------- как осуществлять поиск с помощью SEEK по этим полям? SEEK "ФАМИ"+"ИММ" ------------------------ неполучается... поможите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2006, 00:36 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2006, 02:24 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
Для выполнения поиска по первым символам ключа необходима настройка Код: plaintext Вообще-то, это настройка по умолчанию, но у тебя она видимо изменена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2006, 20:46 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
Огромное Вам, а почему в самом SEEK <выражение> не срабатывает? выражение как никак? или как? А так ОГРОМНОЕ СПС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2006, 21:57 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
321654987Огромное Вам, а почему в самом SEEK <выражение> не срабатывает? выражение как никак? или как? А так ОГРОМНОЕ СПС Да блин, используй ты locate про скорость выборки врут, на нынешних компах примерно та же что и у seek ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 21:17 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
321654987FIO = fm+im+ot SEEK "ФАМИ"+"ИММ" У тебя ключ получается, например: "Иванов Иван Иванович" "Петров Петр Петрович" "Сидоров Сидор Сидорович" а ты хочешь SEEK'нуть такое: "ИванИва"? Не получится! Делай тогда "SEEK(...) and SEEK(...)", но индексы по отдельным полям... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 22:10 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 23:24 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
MFoxer olegovда блин, используй ты locate про скорость выборки врут, на нынешних компах примерно та же что и у seek А Вы собственно знаете разницу между алгоритмами перебора и алгоритмами половинного деления ? И наверное итерационные задачи решали, да ? Даже не смешно, честное слово.. пионерское. Для справки. В FoxPro оптимизируются ВСЕ команды и функции, имеющие FOR-условие. В том числе и LOCATE. Это значит, что в случае наличия простых индексов по полям "Фамилия", "Имя" и "Отчество" конструкция вида SELECT MyTab SET ORDER TO 0 LOCATE FOR "Фамилия" = ... AND "Имя" = ... Также будет оптимизирована и скорость поиска будет сопоставима со скоростью поиска по SEEK(). Разумеется, меньше, но не так уж чтобы очень... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 23:53 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, не будет. Давайте проведем эксперимент. Только определимся с алгоритмом и конфиргурацией компьютера и структурой и объемом данных. Оптимизация движка фокса и алгорим просмотра записи 2 разные вещи, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 00:07 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
MFoxerВладимирМ, не будет. Давайте проведем эксперимент. Только определимся с алгоритмом и конфиргурацией компьютера и структурой и объемом данных. Оптимизация движка фокса и алгорим просмотра записи 2 разные вещи, IMHO. Давайте сначала определимся с терминами. Задача: найти одну запись. Какое отношение к этой задаче имеет "оптимизация движка фокса" и "алгоритм просмотра записи"? В FoxPro есть так называемая Rushmore-оптимизация. Это механизм ускоренного поиска данных основанный на использовании индексов. Так вот, в HELP по FoxPro так и написано: HELP VFP9Use Rushmore to optimize data access according to the number of tables involved. When you access single tables, you can take advantage of Rushmore anywhere that a FOR clause appears. When you access multiple tables, SELECT - SQL queries supersede all Rushmore optimizations. In an SQL command, Visual FoxPro decides what is needed to optimize a query and does the work for you. You don't need to open tables or indexes. If SQL decides it needs indexes, it creates temporary indexes for its own use. Или, то же самое из переведенного HELP к VFP3 HELP VFP3При обработке одиночных таблиц преимущества технологии Rushmore сказываются везде, где используется предложение FOR . При обработке многотабличных запросов команда SELECT - SQL перекрывает все обычные правила, требуемые для технологии Rushmore. Команды SQL автоматически определяют необходимые правила оптимизации запроса. Вам не надо самостоятельно открывать таблицы или индексы. Если для выполнения запроса SQL потребуется индекс, он будет создан на время выполнения запроса. Далее идет список потенциально оптимизируемых выражений. Среди них и команда LOCATE. "Тонкость" использования оптимизации в отношении команд с FOR-условием заключается в том, что для лучшей оптимизации необходимо отключить главный индекс. То самое SET ORDER TO 0 на которое мало кто обращает внимание. Если установлен главный индекс, то да, действительно, будут большие тормоза. Но если его отключить, то скорость поиска будет сопоставима с SEEK(). Повторюсь. Все-таки медленнее, но речь уже будет идти не о порядках, а о "разах". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 01:30 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
>Какое отношение к этой задаче имеет "оптимизация движка фокса" и "алгоритм просмотра записи"? Элементарное. Движок работает на уровне оптимизации страниц(4 КБ), а SEEK как и Locate использует алгоритмы и ему начехать, как там внутри. А Вы мне установки "тычете" . Рашмор - да, круто. Да Эффективно. А как сделан этот самый Рашмор Вы хоть раз задумывались ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 01:39 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
MFoxer>Какое отношение к этой задаче имеет "оптимизация движка фокса" и "алгоритм просмотра записи"? Элементарное. Движок работает на уровне оптимизации страниц(4 КБ), а SEEK как и Locate использует алгоритмы и ему начехать, как там внутри. А Вы мне установки "тычете" . Рашмор - да, круто. Да Эффективно. А как сделан этот самый Рашмор Вы хоть раз задумывались ? У нас стоит задача проверить эффективность работы (скорость поиска) или узнать "как оно внутри тикает"? Как "этот самый Рашмор" работает я примерно представляю, а вот как он сделан - понятия не имею. И по прежнему не вижу, как именно "оптимизация страниц (4КБ)" может повлиять на скорость поиска нужной записи. Знаете, я уже на практике убедился, что оптимизация (ускорение) LOCATE работает . Если у Вас есть возражения - приведите пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 01:55 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, оптимизация ( ускорение ) LOCATE , по сравнению с чем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 02:09 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
На С++ ( FLL) я могу представить Вам функцию поиска ( с условием ) по сравнению с которой Locate "одтыхает" . Верите ? А почему ? А потому ,что когда наши коллеги писали эту функцию небыло итераторов, карт памяти и вообще библиотеки STL. А уж на ее алгоритм с 1992 года точно никто внимания не обращал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 02:21 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
2MFoxer Извините. встряну в Ваш разговор, MFoxer когда наши коллеги писали эту функцию небыло итераторов, не могли бы Вы в двух словах описать "идеологию" этой ф-ии, уж очень любопытно - какой механизм использован для поиска в данных не подчиняющихся формальному описанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 09:07 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
позволю себе тоже встрять в дискуссию. более 10 лет работаю с фоксом. с момента появления рашмора НИКОГДА не использую SEEK правильно построенные индексы + рашмор много удобнее и не сказал-бы чтобы медленнее. составные индексы практически не использую (только для сортировок при посмотрах). Почему удобнее 1. не нужно "помнить" какой индекс активен (хотя в принципе есть indexseek) 2. не нужно при поиске в составных индексах приводить выражение поиска к индексному выражению. 3.при изменениях/удалениях/добавлениях тегов программа работает без переделок. то MFoxer А как сделан этот самый Рашмор Вы хоть раз задумывались ? - меня собственно и не волнует, я знаю как с ним работать, и мне не обязательно знать как он там внутри все делает. Вы когда свет дома включаете - сильно задумываетесь как все устроено ( ну там электростанция , проводка, лампочка) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 12:51 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
MFoxerВладимирМ, оптимизация ( ускорение ) LOCATE , по сравнению с чем ? Вы помните, с чего лично Вы вообще ввязались в эту дискуссию? olegovДа блин, используй ты locate про скорость выборки врут, на нынешних компах примерно та же что и у seek Да, если индексов нет, то команда LOCATE будет вынуждена сканировать записи таблицы, что само по себе медленно. Поэтому с самого начала, когда я вступил в дискуссию, я Вам напомнил, что команда LOCATE может быть оптимизирована (ускорена). Насколько я понимаю, Вы слишком увлеклись опровержением высказывания olegov и просто не поняли, что я Вам напомнил, причем подчеркнул как "К сведению". А напомнил я Вам очевидный факт. Команда LOCATE может выполняться медленно или быстро в зависимости от того, будет ли ее выражение оптимизировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 14:11 |
|
||
|
SEEK, поиск по нескольким полям
|
|||
|---|---|---|---|
|
#18+
MFoxerНа С++ ( FLL) я могу представить Вам функцию поиска... по сравнению с которой Locate "отдыхает" .... DO IT!!! Revolution!!! P.S. Снова ушли в "страну вечных споров"? Исходный вопрос перечитайте... P.P.S. Как сказал когда-то старик Лес - "Билли отвалил грузовик денег за Рашмора"! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 23:15 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33951173&tid=1590880]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
325ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 630ms |

| 0 / 0 |
