Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.09.2005, 17:20
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
Всем привет! Есть таблица, содержащая порядка 1 000 000 строк. Нужно часто выполнять запрос вида: Код: plaintext 1. Таблица содержит десяток полей типа int и пару строковых, по которым и делается LIKE. Что сделать чтобы ускорить выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2005, 17:31
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
Забыл сказать, что этому полю еще и сортировать нужно... т.е. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2005, 17:50
|
|||
|---|---|---|---|
|
|||
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, 18:01
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
Нет, шаблон может самый разный, не только по началу строки. Над полнотекстовым поиском задумывался... Это было бы хорошо, но в АСА нет его. Надо надстраивать что-то сверху. Но я бы пока обошелся шаблонами и LIKE. Я пробовал создать такую же таблицу на mysql - на нем выполняется заметно быстрее. Вот я и задумался "В чем причина?". В mysql я использовал тип char, он фиксирвоанной длины, и следовательно размер записи получается тоже фиксированный. Там и особый какой-то типа таблицы создается. Пока причину шустрости mysql вижу в этом. В АСА, на сколько я понял из хелпа, char имеет переменную длину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2005, 18:25
|
|||
|---|---|---|---|
|
|||
ASA 9. LIKE .... |
|||
|
#18+
Серж пишет: > таблицу на mysql - на нем выполняется заметно быстрее. Вот я и задумался > "В чем причина?". MySQL заточен под быстрое выполнение примитивных запросов. Если это сделать на plain-text файлах некривыми руками, то получится еще гораздо быстрее. Вас это не удивит? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2005, 06:18
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
Нет, не удивит. Но текстовые файлы меня не интересуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2005, 10:07
|
|||
|---|---|---|---|
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, 11:36
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
MasterZiv Сделайте таблицу типа MyTableTextFieldTails, содержащую поля Хм... интересно. Спасибо, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2005, 11:42
|
|||
|---|---|---|---|
|
|||
ASA 9. LIKE .... |
|||
|
#18+
Серж пишет: > Хм... интересно. Спасибо, попробую. Так это и есть один из вариантов примитивного механизма полнотекстового поиска. Только рекомендую для начала подсчитать размеры таблиц. Для миллиона исходных записей при средней длине текстового поля 100 символов в этой таблице будет 100 миллионов записей. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2005, 12:42
|
|||
|---|---|---|---|
ASA 9. LIKE .... |
|||
|
#18+
Тогда нужно наоборот. Делаем таблицу с одной строкой и полем long varchar. Заряжаем туда текстовую строку из 1 записи+текстовую строку из 2-ой записи и т.д. из оригинальной таблицы. Поиск функцией locate. По возвращенной позиции подстроки можно рассчитать номер строки в оригинальной таблице. попробовать надо, насколько быстро будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&mobile=1&tid=2013396]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 266ms |
| total: | 390ms |

| 0 / 0 |
