
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.07.2014, 00:45:36
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Доброго времени суток, для поиска всех записей в БД по полю "NAME", где присутствует подстрока 'михаил' использую запрос: Код: plsql 1. Вопрос: какая есть альтернатива like, запрос с которым при больших таблицах будет медленным? Использовать регулярные выражения? Например так тоже работает: Код: plsql 1. Вопрос только, что быстрее и надежнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.07.2014, 01:14:19
|
|||
|---|---|---|---|
поиск в базе по подстроке |
|||
|
#18+
Viacheslav_mihalich, обычные индексы не используются, если нужно искать по подстроке внутри строки или по регекспу. быстрее должно быть когда используется специальный индекс по триграммам из расширения pg_trgm . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.07.2014, 14:24:51
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
есть gist индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.07.2014, 23:22:27
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Спасибо, создал индекс Код: plsql 1. Проверил на производительность 3 варианта поиска: 1. Код: plsql 1. план выполнения: Код: plsql 1. 2. 3. 4. 5. 6. 7. 2. Код: plsql 1. план выполнения: Код: plsql 1. 2. 3. 4. 5. 3. Код: plsql 1. план выполнения: Код: plsql 1. 2. 3. 4. 5. Видно, что 3-й способ не на много медленнее, чем через gist индекс. Запрос с LIKE, как и ожидалось, значительно медленнее. Но это еще пока данных в БД мало. При больших данных разница во времени скорей всего почувствуется еще сильней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.07.2014, 00:50:50
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Viacheslav_mihalich, уберите сортировку в первом варианте: в других ее нет, а тут на нее уходит большая часть времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.07.2014, 01:48:18
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Viacheslav_mihalich, тестируйте на гораздо большем объеме данных. на ваших ста строках разница почти не видна. вот если не в два раза, а на порядки, это сразу будет заметно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.07.2014, 01:49:12
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Viacheslav_mihalich, время всех трёх запросов меньше одной миллисекунды, это даже в сумме меньше чем квант времени в мультизадачной операционной системе, такой например как windows. Ваша ОС квант времени пропустит и время запроса в десять раз прыгнет, какой смысл тестировать на таком малом количестве данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.07.2014, 02:30:46
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Гость_0Viacheslav_mihalich, время всех трёх запросов меньше одной миллисекунды, это даже в сумме меньше чем квант времени в мультизадачной операционной системе, такой например как windows . Ваша ОС квант времени пропустит и время запроса в десять раз прыгнет, какой смысл тестировать на таком малом количестве данных?плин, зря итаниумы заморозили .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.07.2014, 09:45:07
|
|||
|---|---|---|---|
|
|||
поиск в базе по подстроке |
|||
|
#18+
Viacheslav_mihalichСпасибо, Видно, что 3-й способ не на много медленнее, чем через gist индекс. Запрос с LIKE, как и ожидалось, значительно медленнее. Но это еще пока данных в БД мало. При больших данных разница во времени скорей всего почувствуется еще сильней. видно что 2-й и 3-й способы одинаковые, фул скан с фильтром. 1-й юзает индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=1998592]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
87ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 402ms |

| 0 / 0 |
