Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание и использование индексов 
:(
    Опции темы
chiffa
Дата 18.2.2015, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: нет
Всего: -1



Всем доброе время суток. 2 базы и ряд таблиц в них. Индексы проставлены (типа key), пытаюсь выполнить запрос через EXPLAIN

получаю:
"id"    "select_type"    "table"    "type"    "possible_keys"    "key"    "key_len"    "ref"    "rows"              "Extra"
"1"    "PRIMARY"       "a"      "ALL"    "user_id,office_id"      \N               \N      \N    "860"    "Using where; Using filesort"

иду в таблицу с алиасом "а", индексы user_id,office_id  (типа key) есть.

запрос SHOW STATUS LIKE 'handler_read%'; возвращает

"Variable_name"    "Value"
"Handler_read_first"    "0"
"Handler_read_key"    "1"
"Handler_read_last"    "0"
"Handler_read_next"    "0"
"Handler_read_prev"    "0"
"Handler_read_rnd"    "0"
"Handler_read_rnd_deleted"    "0"
"Handler_read_rnd_next"    "748"

то есть индексы не работают... Подскажите, пожалуйста, как корректно проставить индексы. Спасибо


PM MAIL   Вверх
baldina
Дата 18.2.2015, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



хотите волшебный телепатический рецепт? не выйдет, показывайте структуру, индексы, запрос
PM MAIL   Вверх
chiffa
Дата 18.2.2015, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: нет
Всего: -1



Структура таблицы:

Код

-- Дамп структуры для таблица exchange.collection
CREATE TABLE IF NOT EXISTS `collection` (
  `user_id` int(11) NOT NULL DEFAULT '0',
  `branch_id` int(11) NOT NULL DEFAULT '0',
  `office_id` int(11) NOT NULL DEFAULT '0',
  `ccy_id` int(11) DEFAULT NULL,
  `time` varchar(30) DEFAULT NULL,
  `type` varchar(3) DEFAULT NULL,
  `balance` int(20) DEFAULT '0',
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `ccy_id` (`ccy_id`),
  KEY `cast_id` (`cast_id`),
  KEY `user_id` (`user_id`),
  KEY `branch_id` (`branch_id`),
  KEY `office_id` (`office_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;


запрос, довольно простой:


Код

EXPLAIN SELECT * FROM exchange.collection a WHERE 
(a.ctime between STR_TO_DATE("2015-02-18", '%Y-%m-%d') and DATE_ADD(STR_TO_DATE("2015-02-18", '%Y-%m-%d'), interval 1 day))
and a.office_id >0
and a.`type` like '%'
and a.balance > 0
and  a.user_id >0 

ORDER BY a.ctime DESC;

PM MAIL   Вверх
baldina
Дата 19.2.2015, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



Цитата(chiffa @  18.2.2015,  18:41 Найти цитируемый пост)
2 базы и ряд таблиц в них


Цитата(chiffa @  18.2.2015,  21:12 Найти цитируемый пост)
Структура таблицы

Цитата(chiffa @  18.2.2015,  21:12 Найти цитируемый пост)
запрос, довольно простой

 smile 

а что за поле ctime, в таблице вижу только time?
cast_id, по которому индекс, отсутствует в таблице
вы явно чего-то не договариваете  smile 

ну, видимо mysql не увидел как можно использовать имеющиеся ключи для выбора типа запросе (type ALL). но использовал ключи для определения условия (using where)
индексы есть не по всем полям. нет по ctime, по которому order, поэтому using filesort
кстати условие по type выглядит странно))

добавьте индекс по time. ожидается, что тип запроса станет range а filesort исчезнет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.