|
Kuzya ↓
|
 |
|
21 Июль, 2008, 04:33:58
|
НЕ ХУЕТА!
ХУЕТА!
|
|
Карма: 0
Сообщений: 26 Сила слова: 0
|
Нужно написать поиск по базе новостей. Естественно запросы на выборку совпадений идут примерно такие
"SELECT ... FROM ... WHERE ... LIKE %слово%"
вот из-за %слово% нагрузка на MySQL сильно возрастает. EXPLAIN показывает что задеваются все записи в базе (а их несколько тысяч). Подскажите какие-либо варианты уменьшения такой нагрузки.
|
|
|
|
|
Записан
|
white-team.net
|
|
|
|
megabit ↓
|
 |
|
21 Июль, 2008, 04:35:44 , спустя 1 минуту 46 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 6
Сообщений: 362 Сила слова: 1.66
|
выбирать те поля которые нужны а не все
т.е не SELECT * FROM.... а SELECT id,name,about..... FROM
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Июль, 2008, 04:49:52 , спустя 14 минут 8 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
|
|
megabit ↓
|
 |
|
21 Июль, 2008, 04:54:19 , спустя 4 минуты 27 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 6
Сообщений: 362 Сила слова: 1.66
|
а скажи что быстрее если 1000 запесей во всех полях
и что будет быстрее SELECT * FROM `table` или SELECT только нужных полей FROM `table` ???
|
|
|
|
|
Записан
|
|
|
|
|
aivee ↓
|
 |
|
21 Июль, 2008, 05:16:39 , спустя 22 минуты 20 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Джедаи Карма: 28
Сообщений: 1659 Сила слова: 1.69
|
только нужных полей
но ведь для новостей возможне все поля будут нужны
|
|
|
|
|
Записан
|
21st century slave
|
|
|
|
sap ↓
|
 |
|
21 Июль, 2008, 05:41:27 , спустя 24 минуты 48 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Жмурики Карма: 40
Сообщений: 2697 Сила слова: 1.48
|
Все очень редко бывают нужны.
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Июль, 2008, 05:45:29 , спустя 4 минуты 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
megabit,
1 не храни в одной таблице стока мусора
2 скорость от этого зависит слабо, даже дело не в скорости поиска, дело в том что когда ты извлекаешь больше инфы ты расходуешь больше памяти и время увеличиваеться засчет доступа к этой памяти. а если у тебя в таблице текс,автор,дата,категори то ты ничего не секономишь если будешь выбирать только текст.
3 если тебе всетаки надо хранить текст на 2 и более языках то используй таблицы с префиксом для каждого языка и отдельную для метаинформации
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
megabit ↓
|
 |
|
21 Июль, 2008, 05:48:48 , спустя 3 минуты 19 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 6
Сообщений: 362 Сила слова: 1.66
|
1. у него записей несколько тысяч
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Июль, 2008, 06:13:33 , спустя 24 минуты 45 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
megabit, иди учи мат часть
компания mysql разрабатывала свою бд на нескольких милионах записей
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
Kuzya ↓
|
 |
|
21 Июль, 2008, 09:43:17 , спустя 3 часа 29 минут 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
Карма: 0
Сообщений: 26 Сила слова: 0
|
выбирать те поля которые нужны а не все
Выбираются только id новостей.
навесь на БД индексы где надо и будет тебе щастя
Дело в том что поиск происходит по полям типа TEXT и не "слово%" а "%слово%" - насколько я знаю при этом варианте индексы не задействуются.
|
|
|
|
|
Записан
|
white-team.net
|
|
|
|
adw0rd ↓
|
 |
|
21 Июль, 2008, 10:39:50 , спустя 56 минут 33 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
|
|
Kuzya ↓
|
 |
|
22 Июль, 2008, 08:11:51 , спустя 9 часов 32 минуты 1 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
|
Карма: 0
Сообщений: 26 Сила слова: 0
|
Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =)
|
|
|
|
|
Записан
|
white-team.net
|
|
|
|
adw0rd ↓
|
 |
|
22 Июль, 2008, 08:49:25 , спустя 37 минут 34 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17633 Сила слова: 1.67
|
Kuzya, :)
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
22 Июль, 2008, 02:58:11 , спустя 6 часов 8 минут 46 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
Kuzya ↓
|
 |
|
22 Июль, 2008, 03:12:03 , спустя 13 минут 52 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
|
Карма: 0
Сообщений: 26 Сила слова: 0
|
Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше
Две мессаги вверх =)
Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =)
|
|
|
|
|
Записан
|
white-team.net
|
|
|
|