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

> составные индексы, то используются, то нет
dvs  
 ۩  [x] Дата
Цитировать сообщение

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Добрый день! Подскажите пожалуйста почему при разных user, берутся разные index-ы? Запросы отличаются только разными user.

mysql> EXPLAIN SELECT `id` FROM `busines` WHERE `user` = 53 AND `status` IN ('','finish') AND `date_from` <= 1458214920 AND `date_to` >= 1458214920;
+
----+-------------+---------+-------+--------------------------------------+------+---------+------+ ------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+--------------------------------------+------+---------+------ +------+--------------------------+
| 1 | SIMPLE | busines | range | status,date_from,date_to,user,user_2 | user | 9 | NULL | 2 | Using where; Using index |
+----+-------------+---------+-------+--------------------------------------+------+---------+------ +------+--------------------------+
1 row in set (0.00 sec)

mysql> EXPLAIN SELECT `id` FROM `busines` WHERE `user` = 51 AND `status` IN ('','finish') AND `date_from` <= 1458214920 AND `date_to` >= 1458214920;
+----+-------------+---------+-------+--------------------------------------+--------+---------+---- --+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+--------------------------------------+--------+---------+---- --+------+-------------+
| 1 | SIMPLE | busines | range | status,date_from,date_to,user,user_2 | user_2 | 9 | NULL | 142 | Using where |
+----+-------------+---------+-------+--------------------------------------+--------+---------+---- --+------+-------------+
1 row in set (0.18 sec)

mysql> SHOW INDEX FROM `busines`;
+---------+------------+-----------+--------------+-------------+-----------+-------------+--------- -+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+-----------+--------------+-------------+-----------+-------------+--------- -+--------+------+------------+---------+---------------+
| busines | 0 | PRIMARY | 1 | id | A | 4651 | NULL | NULL | | BTREE | | |
| busines | 1 | status | 1 | status | A | 2 | NULL | NULL | | BTREE | | |
| busines | 1 | date_from | 1 | date_from | A | 2325 | NULL | NULL | | BTREE | | |
| busines | 1 | date_to | 1 | date_to | A | 2325 | NULL | NULL | | BTREE | | |
| busines | 1 | client | 1 | client | A | 2325 | NULL | NULL | | BTREE | | |
| busines | 1 | code | 1 | code | A | 4651 | NULL | NULL | | BTREE | | |
| busines | 1 | user | 1 | user | A | 54 | NULL | NULL | | BTREE | | |
| busines | 1 | user | 2 | status | A | 83 | NULL | NULL | | BTREE | | |
| busines | 1 | user | 3 | date_from | A | 4651 | NULL | NULL | | BTREE | | |
| busines | 1 | user | 4 | date_to | A | 4651 | NULL | NULL | | BTREE | | |
| busines | 1 | user_2 | 1 | user | A | 26 | NULL | NULL | | BTREE | | |
| busines | 1 | user_2 | 2 | status | A | 40 | NULL | NULL | | BTREE | | |
| busines | 1 | user_2 | 3 | date_to | A | 4651 | NULL | NULL | | BTREE | | |
+---------+------------+-----------+--------------+-------------+-----------+-------------+--------- -+--------+------+------------+---------+---------------+
13 rows in set (0.00 sec)

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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 18 дней
Карма: 170




Другой пользователь, другое количество строк связанных с ним - этого достаточно, чтобы СУБД приняло решение делать иначе.


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Цитата (T1grOK @ 17.03.2016 - 13:06)
Другой пользователь, другое количество строк связанных с ним - этого достаточно, чтобы СУБД приняло решение делать иначе.

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

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

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