Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть таблица, содержащая порядка 1 000 000 строк. Нужно часто выполнять запрос вида: Код: plaintext 1. Таблица содержит десяток полей типа int и пару строковых, по которым и делается LIKE. Что сделать чтобы ускорить выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 17:20 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Забыл сказать, что этому полю еще и сортировать нужно... т.е. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 17:31 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Серж пишет: > select top N start at M * from where text_field like 'some pattern'. .... > Что сделать чтобы ускорить выполнения запроса? Если этот some pattern затрагивает начало строки, т.е. имеет например вид 'что-то%', то просто индекс по полю поможет. Если что-то типа '%что-то%', то тогда задумайся над механизмами полнотекстового поиска. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 17:50 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Нет, шаблон может самый разный, не только по началу строки. Над полнотекстовым поиском задумывался... Это было бы хорошо, но в АСА нет его. Надо надстраивать что-то сверху. Но я бы пока обошелся шаблонами и LIKE. Я пробовал создать такую же таблицу на mysql - на нем выполняется заметно быстрее. Вот я и задумался "В чем причина?". В mysql я использовал тип char, он фиксирвоанной длины, и следовательно размер записи получается тоже фиксированный. Там и особый какой-то типа таблицы создается. Пока причину шустрости mysql вижу в этом. В АСА, на сколько я понял из хелпа, char имеет переменную длину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 18:01 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Серж пишет: > таблицу на mysql - на нем выполняется заметно быстрее. Вот я и задумался > "В чем причина?". MySQL заточен под быстрое выполнение примитивных запросов. Если это сделать на plain-text файлах некривыми руками, то получится еще гораздо быстрее. Вас это не удивит? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 18:25 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Нет, не удивит. Но текстовые файлы меня не интересуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 06:18 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
СержНет, шаблон может самый разный, не только по началу строки. Над полнотекстовым поиском задумывался... Это было бы хорошо, но в АСА нет его. Надо надстраивать что-то сверху. Сделайте таблицу типа MyTableTextFieldTails, содержащую поля КлючОсновнойТаблицы НомерПозиции Остаток В поле остаток нужно положить substring(text_field, НомерПозиции,length(text_field )), т.е. таблица должна содержать text_field, text_field со второго символа, text_field с третьего символа, с четвертого символа и т.д. до последнего. Поле Остаток проиндексируйте. Таблицу MyTableTextFieldTails поддерживайте триггерами или хранимыми процедурами. Ваш запрос Код: plaintext 1. Код: plaintext 1. 2. 3. 4. Или аналогичный запрос с подзапросом по MyTableTextFieldTails. Этот запрос гораздо более работоспособен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 10:07 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
MasterZiv Сделайте таблицу типа MyTableTextFieldTails, содержащую поля Хм... интересно. Спасибо, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 11:36 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Серж пишет: > Хм... интересно. Спасибо, попробую. Так это и есть один из вариантов примитивного механизма полнотекстового поиска. Только рекомендую для начала подсчитать размеры таблиц. Для миллиона исходных записей при средней длине текстового поля 100 символов в этой таблице будет 100 миллионов записей. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 11:42 |
|
||
|
ASA 9. LIKE ....
|
|||
|---|---|---|---|
|
#18+
Тогда нужно наоборот. Делаем таблицу с одной строкой и полем long varchar. Заряжаем туда текстовую строку из 1 записи+текстовую строку из 2-ой записи и т.д. из оригинальной таблицы. Поиск функцией locate. По возвращенной позиции подстроки можно рассчитать номер строки в оригинальной таблице. попробовать надо, насколько быстро будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2005, 12:42 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33268350&tid=2013396]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 360ms |

| 0 / 0 |
