[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стоит ли лепить индекс для 5 строк ORDER BY?
GET
Привет.

Есть таблица 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

Что посоветуете?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
T1grOK
Опять же зависит от селективности, от преобладающих запросов в приложении и от размера индекса.
Почему не рассматриваешь вариан создания нескольких индексов?


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
GET
T1grOK

Жалко как-то два индекса похожих делать на такое огромное количесвто строк.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Просто думаю...когда строк мало он же итак перебором считает, только что для него мало.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
T1grOK
Тогда ты не сможешь добиться чего хочешь. У меня на проекте используется 10 индексов как составных так и одиночных, но по другому в моей ситуации не обойтись.
Сделай составной индекс на int1/int2 и на int3/int2 возможно...
Все это нужно смотреть, что и какую нагрузку создает, покрыть индексами все, если есть великое множество вариантов в принципе невозможно.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
GET
T1grOK
Спасибо.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
MiksIr

Цитата
Я бы просто по int1 обошелся индексом, если там и правда 25 строк =) Или int1/int3 + int2


Там от 10 до 25 строк, но не более (рабочие дни месяца). Я не знаю механизмов внутри mysql, что там происходит и насколько это все серьезно, вроде строк то совсем нечего, но что если само создание вспомогательно файла при file_sort, пусть он даже совсем небольшой, НО задействует "тяжелые" механизмы, которых и нужно избегать.

Написал, как писатель ...

В любом случае спасибо.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Цитата
Если все влезает в sort_buffer_size - то даже временных таблиц не создается. А "все" - это набор пар "сортируемое поле - ключ".


Ммм...понятно. Ну спасибо еше раз!

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Step
Партицирование сделать по одному из полей, и индексы по двум другим.
sergeiss
Цитата (ABC @ 31.01.2014 - 18:50)
Я не знаю механизмов внутри mysql, что там происходит и насколько это все серьезно...

Используй EXPLAIN и ты попадёшь в "святая святых", внутрь Мускуля smile.gif И он тебе расскажет (сам, добровольно!!!), какие же, на самом деле, индексы он будет использовать. Если вообще будет их использовать. И ты будешь основываться не на умозрительных ощущениях, а на знании фактов.

PS. Ну вот что нашел за 30 секунд гугленья... http://mattweb.ru/component/k2/item/65-isp...aprosov-k-mysql
Может быть, есть и лУчшие описания - ищи.

PPS. А заголовок твоей темы "Стоит ли лепить индекс для 5 строк ORDER BY?" вообще не правильный. Потому что у тебя не 5, а ~150 тыщ строк, как ты сам сказал. И он будет в первую очередь для получения этих 5 строк (если индекс "правильный").

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
sergeiss

Все, что ты написал очевидно и понятно без гугла, думаешь я тут на форуме 4 года EXPLAIN не знаю что такое? Я про другие механизмы говорю, намного глубже чем ты видишь.

Цитата
Потому что у тебя не 5, а ~150 тыщ строк, как ты сам сказал


Читай внимательно пост.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Тема закрыта - сделал все же 2 индекса.

Всем спасибо. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.