Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Стоит ли лепить индекс для 5 строк ORDER BY?
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 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

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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2804
Пользователь №: 24406
На форуме: 14 лет, 5 месяцев, 3 дня
Карма: 181




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


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




T1grOK

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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2804
Пользователь №: 24406
На форуме: 14 лет, 5 месяцев, 3 дня
Карма: 181




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


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




T1grOK
Спасибо.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




MiksIr

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


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

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

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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




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


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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Step  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 9
Пользователь №: 38515
На форуме: 11 лет, 3 месяца, 19 дней
Карма:




Партицирование сделать по одному из полей, и индексы по двум другим.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15860
Пользователь №: 4190
На форуме: 17 лет, 1 месяц, 13 дней
Карма: 490




Цитата (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 строк (если индекс "правильный").

Это сообщение отредактировал sergeiss - 1.02.2014 - 00:35


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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




sergeiss

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

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


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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3900
Пользователь №: 21196
На форуме: 15 лет, 16 дней
Карма: 88




Тема закрыта - сделал все же 2 индекса.

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


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса