Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Медленно работает LIKE [D7, FireBird 1.5]


Страницы:   1 2 3 4 5

galexis ©   (2006-06-22 10:28:00) 

Используется запрос типа select * from Table Where (Fld1 LIKE '%' || 'Text' || '%')

Данные Fld1 (тип VarChar длина 1000) состоят из нескольких слов (наименовние предприятий).
Так вот. Ищу, например, "Горьковский автомобильный завод" по одному слову "автомобильный". Запрос выполняется меньше секунды. Пытаюсь провести поиск по неполному слову, например, "горьковск" - и тут все, поиск идет минут 20.
Чего бы это?


galexis   (2006-06-22 15:25:00) [41]

Упростил запрос дальше не куда (почти)
select NAMEP from Tbl Where  ( UPPER(NAMEP) LIKE '%' || 'НИЖЕГОРОДСКАЯ ЭЛЕКТРИЧЕСКАЯ КОМПАНИЯ' || '%')

39 секунд :(
Чего делать то? Все это произошло по моему после очередной закачки данных. Таблица что ли по количеству записей какой порог перешагнула? Или файл базы по размеру?


Johnmen   (2006-06-22 15:21:00) [42]

Да, и ещё они зависят от языка в части встречаемости тех или иных букв...


Johnmen   (2006-06-22 15:19:00) [43]


> Danilka ©   (22.06.06 15:11) [44]


Есть предположение, что FB использует один из вариантов т.н. интеллектуального алгоритма поиска подстроки в строке.
Такие алгоритмы описаны в книге...Во, уже забыл, в какой...:)
Для этих алгоритмов характерна существенная зависимость производительности от контекста и объема. Вот я и пытаюсь зацепиться за рез-ты тестов...


galexis   (2006-06-22 15:16:00) [44]


> Johnmen ©   (22.06.06 15:10) [43]

Ну этого сказать я не могу. Но на запрос по "Электрическая компания" находилось (и находится в старой базе) две записи:
Нижегородская электрическая компания и электрическая компания

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


Danilka   (2006-06-22 15:11:00) [45]

[31] Johnmen ©   (22.06.06 14:01)
> Есть кое-какие соображения.

Ты не томи, говори соображения, а то аж интересно стало, что за странности :)


Johnmen   (2006-06-22 15:10:00) [46]

А много ли записей, в поле которых встречаются слова "электрическая" и "компания"?


galexis   (2006-06-22 15:08:00) [47]


> Johnmen ©   (22.06.06 15:07) [41]
> А такие сколько
> "%лектрическая компания%"
> "%ектрическая компания%"
> "%ктрическая компания%"
>
> "%компания%"
> ?

Запросы длятмся больше 2 минут и я отменяю


Johnmen   (2006-06-22 15:07:00) [48]

А такие сколько
"%лектрическая компания%"
"%ектрическая компания%"
"%ктрическая компания%"

"%компания%"
?


galexis   (2006-06-22 15:03:00) [49]

все остальные запросы уходят за 2 минуты и я их отменяю


galexis   (2006-06-22 14:56:00) [50]

ну вот, а я 33 прождал


Johnmen   (2006-06-22 14:49:00) [51]

Конечно отменяй! Давно пора. Если время превышает 2-3 мин, то снимай...


galexis   (2006-06-22 14:31:00) [52]

вот уже 12 минут выполняется "% электрическая компания%"
Может отменить?


Johnmen   (2006-06-22 14:28:00) [53]

Дело не в кофигурации.
Всё-таки тесты проведи...


galexis   (2006-06-22 14:26:00) [54]


> Johnmen ©   (22.06.06 14:22) [33]

не могу, все еще "% электрическая компания%"
выполняется


galexis   (2006-06-22 14:25:00) [55]

Может сам FireBird конфигурировать надо?


Johnmen   (2006-06-22 14:22:00) [56]

И ещё замерь
"%лектрическая компания%"


galexis   (2006-06-22 14:21:00) [57]

"%Нижегородская электрическая компания%"
"%ижегородская электрическая компания%" 25 S 500 MS
"%жегородская электрическая компания%" 27s 125ms
"%егородская электрическая компания%" 27s 406ms
"%городская электрическая компания%" 26s 907ms
"%ородская электрическая компания%" 27s 500ms
"%родская электрическая компания%" 26s 63ms
"%одская электрическая компания%"  27s 281ms
"%дская электрическая компания%" 26s 609ms
"%ская электрическая компания%"  26s 594ms
"%кая электрическая компания%" 26s 657ms
"%ая электрическая компания%"  27s 578ms
"%я электрическая компания%" 27s 953ms
"% электрическая компания%"
"%электрическая компания%"

Пока все, очередной запрос выпоняется уже 2 минуты


Johnmen   (2006-06-22 14:01:00) [58]


> galexis   (22.06.06 13:23) [29]


Есть кое-какие соображения.
Приведи времена для
"%Нижегородская электрическая компания%"
"%ижегородская электрическая компания%"
"%жегородская электрическая компания%"
"%егородская электрическая компания%"
"%городская электрическая компания%"
"%ородская электрическая компания%"
"%родская электрическая компания%"
"%одская электрическая компания%"
"%дская электрическая компания%"
"%ская электрическая компания%"
"%кая электрическая компания%"
"%ая электрическая компания%"
"%я электрическая компания%"
"% электрическая компания%"
"%электрическая компания%"


galexis   (2006-06-22 14:00:00) [59]

Дождался. Выполнился запрос. Смотрю в IBExpert Perfomance Analysis, а там большая часть времени потрачена на индексный поиск!
Т.е. если я ввожу Нижегородская электрическая компания, то идет неиндексный поиск со временем 80045, а если просто "электрическая компания", то неиндексный поиск все те же 80045, но появляется еще индексный с временем 349 784 353. Чего за хрень то? Может индексы перестроить?


galexis   (2006-06-22 13:23:00) [60]

С восстановленной базой работать стало еще хуже.
1. Ввожу "Нижегородская электрическая компания". Запрос выпоняется 390 мс. Находится одно предприятие с полным названием Закрытое акционерное общество "Нижегородская электрическая компания".
2. Ввожу "электрическая компания". И вот уже 20 минут выполняется.
Чего случилось то? Все понимаю, UPPER, LIKE, все долго, но не настолько же!


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо