
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Привет.
Есть таблица INNODB на ~150 тысяч строк. id(int) / int1 / int2 / varchar / int3 Есть индекс по int1, который всегда выхватывает не более 25 строк. Вот такой запрос: SELECT `id`,`varchar` WHERE `int1`= 355 AND `int3`<36 ORDER BY `int2` Сижу мучаюсь, как выгоднее: 1. Сделать составной индекс по: int1/int3 , но тогда ORDER BY будет создавать file_sort 2. Сделать составной индекс по: int1/int2 , тогда ORDER BY будет использовать индекс, но int3 будет пересчитываться перебором все 25 строчек, чтоб отыскать int3<36 Что посоветуете? -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
|
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2804 Пользователь №: 24406 На форуме: Карма: 181 ![]() |
Опять же зависит от селективности, от преобладающих запросов в приложении и от размера индекса.
Почему не рассматриваешь вариан создания нескольких индексов? -------------------- Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
|
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
T1grOK
Жалко как-то два индекса похожих делать на такое огромное количесвто строк. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Просто думаю...когда строк мало он же итак перебором считает, только что для него мало.
-------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
|
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2804 Пользователь №: 24406 На форуме: Карма: 181 ![]() |
Тогда ты не сможешь добиться чего хочешь. У меня на проекте используется 10 индексов как составных так и одиночных, но по другому в моей ситуации не обойтись.
Сделай составной индекс на int1/int2 и на int3/int2 возможно... Все это нужно смотреть, что и какую нагрузку создает, покрыть индексами все, если есть великое множество вариантов в принципе невозможно. -------------------- Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
|
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
T1grOK
Спасибо. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
MiksIr
Там от 10 до 25 строк, но не более (рабочие дни месяца). Я не знаю механизмов внутри mysql, что там происходит и насколько это все серьезно, вроде строк то совсем нечего, но что если само создание вспомогательно файла при file_sort, пусть он даже совсем небольшой, НО задействует "тяжелые" механизмы, которых и нужно избегать. Написал, как писатель ... В любом случае спасибо. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Ммм...понятно. Ну спасибо еше раз! -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 9 Пользователь №: 38515 На форуме: Карма: ![]() |
Партицирование сделать по одному из полей, и индексы по двум другим.
|
![]() |
|||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Используй EXPLAIN и ты попадёшь в "святая святых", внутрь Мускуля ![]() PS. Ну вот что нашел за 30 секунд гугленья... http://mattweb.ru/component/k2/item/65-isp...aprosov-k-mysql Может быть, есть и лУчшие описания - ищи. PPS. А заголовок твоей темы "Стоит ли лепить индекс для 5 строк ORDER BY?" вообще не правильный. Потому что у тебя не 5, а ~150 тыщ строк, как ты сам сказал. И он будет в первую очередь для получения этих 5 строк (если индекс "правильный"). Это сообщение отредактировал sergeiss - 1.02.2014 - 00:35 -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
sergeiss Все, что ты написал очевидно и понятно без гугла, думаешь я тут на форуме 4 года EXPLAIN не знаю что такое? Я про другие механизмы говорю, намного глубже чем ты видишь.
Читай внимательно пост. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Тема закрыта - сделал все же 2 индекса.
Всем спасибо. ![]() -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
![]() ![]() ![]() |