Форум → Разработка → Базы данных → Уменьшение нагрузки на MySQL
Уменьшение нагрузки на MySQL
Страницы: ← Следующая страница →
-
Нужно написать поиск по базе новостей. Естественно запросы на выборку совпадений идут примерно такие
"SELECT … FROM … WHERE … LIKE %слово%"
вот из-за %слово% нагрузка на MySQL сильно возрастает. EXPLAIN показывает что задеваются все записи в базе (а их несколько тысяч). Подскажите какие-либо варианты уменьшения такой нагрузки. -
Июль 21, 2008, 4:35 п.п., спустя 1 минуту 46 секунд
выбирать те поля которые нужны а не все
т.е не SELECT * FROM…. а SELECT id,name,about….. FROM -
Июль 21, 2008, 4:49 п.п., спустя 14 минут 8 секунд
megabit, бред!
Kuzya, http://mabp.kiev.ua/content/2008/04/26/search_engine_works_now/
нормально все работает
навесь на БД индексы где надо и будет тебе щастя -
Июль 21, 2008, 4:54 п.п., спустя 4 минуты 27 секунд
а скажи что быстрее если 1000 запесей во всех полях
и что будет быстрее SELECT * FROM `table` или SELECT только нужных полей FROM `table` ??? -
Июль 21, 2008, 5:16 п.п., спустя 22 минуты 20 секунд
только нужных полей
но ведь для новостей возможне все поля будут нужны -
-
Июль 21, 2008, 5:45 п.п., спустя 4 минуты 2 секунды
megabit,
1 не храни в одной таблице стока мусора
2 скорость от этого зависит слабо, даже дело не в скорости поиска, дело в том что когда ты извлекаешь больше инфы ты расходуешь больше памяти и время увеличиваеться засчет доступа к этой памяти. а если у тебя в таблице текс,автор,дата,категори то ты ничего не секономишь если будешь выбирать только текст.
3 если тебе всетаки надо хранить текст на 2 и более языках то используй таблицы с префиксом для каждого языка и отдельную для метаинформации -
-
Июль 21, 2008, 6:13 п.п., спустя 24 минуты 45 секунд
megabit, иди учи мат часть
компания mysql разрабатывала свою бд на нескольких милионах записей -
Июль 21, 2008, 9:43 п.п., спустя 3 часа 29 минут 44 секунды
выбирать те поля которые нужны а не все
Выбираются только id новостей.навесь на БД индексы где надо и будет тебе щастя
Дело в том что поиск происходит по полям типа TEXT и не "слово%" а "%слово%" - насколько я знаю при этом варианте индексы не задействуются. -
Июль 21, 2008, 10:39 п.п., спустя 56 минут 33 секунды
Kuzya, да, при втором варианте не задействуются на сколько я знаю. Может юзать http://www.mysql.ru/docs/man/Fulltext_Search.html ?https://smappi.org/ - платформа по созданию API на все случаи жизни -
Июль 22, 2008, 8:11 д.п., спустя 9 часов 32 минуты 1 секунду
Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =) -
Июль 22, 2008, 8:49 д.п., спустя 37 минут 34 секунды
Kuzya, :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
Июль 22, 2008, 2:58 п.п., спустя 6 часов 8 минут 46 секунд
Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше -
Июль 22, 2008, 3:12 п.п., спустя 13 минут 52 секунды
Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше
Две мессаги вверх =)Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =)
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!