![]() |
|
Модераторы: skyboy |
![]()
|
|
| Muchenik |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 27.10.2005 Репутация: нет Всего: 5 |
Доброго времени суток. Помогите пожалуйста советом.
Есть таблица размером около 400 тыс. с постоянным ростом. На выполнение элементарного запроса
уходит около 2-3 сек. Условию удовлетворяет около 140тыс. записей. Что с довольно быстрым хостингом очень много для такого запроса (ИМХО). Таблица состоит около 50 полей (знаю много Таблица без динамических полей. Частичная структура следующая:
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE ht ref vis,location_key location_key 5 const 131835 Using where Это нормально, что при поиске затрагиваются 131835 записей? Может быть есть рекомендации. Спасибо за любой совет. |
||||
|
|||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
если этоту информацию необходимо получать весьма часто, надо материализовывать аггрегацию. Завести сбоку табличку с ключем по country и значением count. и вести ее из триггера на вашей табличке, запросы выполнять к ней. Следует однако заметить, что при таком подходе, многопользовательское добавление записей в вашу табличку будет сериализовываться по стране. Это сообщение отредактировал(а) Zloxa - 1.7.2009, 22:38 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
А смысл? Селективность отбора по такому индексу, судя по логике, будет весьма велика -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Muchenik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 27.10.2005 Репутация: нет Всего: 5 |
Индекс по visible есть.
Там я приводил пример explain, все равно я так понял что используется один ключ. |
|||
|
||||
| dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: нет Всего: 10 |
если поле visible BIT, то стоит его поставить в условии первым
да и ключик можно (visible, country) у меня тоже есть база, где миллионы записей, условие по трем полям (ключь по этим трем полям), 2 inner и 8 left join`ов, выполняется 0,284 сек (результат - от 0 до 1000 записей) -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Миллионы делим на 1000 и получаем селективность < 0,1% при столь низкой селективности, индексы действительно очень эффективны. В ситуации же, описанной ТС, ожидать что селективность отбора по комбинации (visible, country) будет достаточно низка - не приходится. О чем он и говорит: селективность = 140/400=35% Это ОЧЕНЬ высокая селективность. Эффект от использования индексов, даже если и будет заметен, врядли оукпит затраты на содержание этих самых индексов. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |