Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация order by limit / 12 сообщений из 12, страница 1 из 1
05.11.2015, 08:49:00
    #39094861
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
всем привет! заранее спасибо за любую помощь)
вот такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT  I.not_date, I.id, I.content, I.title, R.RESOURCE_LOGO, R.RESOURCE_PAGE_URL, R.RESOURCE_NAME
FROM items I, section_items SI, resource R
WHERE SI.section_id =6
AND SI.user_id =3
AND I.id = SI.item_id
AND I.res_id = R.RESOURCE_ID
AND I.not_date <=  '2015-11-05'
ORDER BY I.not_date DESC, I.nd_date DESC
LIMIT 0 , 10


выполняется около 10-15 секунд. I.not_date индексирован, I.nd_date integer
как можно оптимизировать этот запрос?
...
Рейтинг: 0 / 0
05.11.2015, 08:51:18
    #39094863
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
BIS-10-2I.not_date индексирован, I.nd_date integerиндексы покажите
...
Рейтинг: 0 / 0
05.11.2015, 09:00:44
    #39094872
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE IF NOT EXISTS `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `log_id` int(11) NOT NULL,
  `res_id` int(11) NOT NULL,
  `link` varchar(255) NOT NULL,
  `title` text NOT NULL,
  `content` text NOT NULL,
  `n_date` varchar(255) NOT NULL,
  `nd_date` int(11) NOT NULL,
  `s_date` int(11) NOT NULL,
  `not_date` date NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `link_2` (`link`),
  KEY `log_id` (`log_id`),
  KEY `res_id` (`res_id`),
  KEY `now_date` (`not_date`)
) ENGINE=Aria  DEFAULT CHARSET=utf8 PAGE_CHECKSUM=0 AUTO_INCREMENT=8020928 ;
...
Рейтинг: 0 / 0
05.11.2015, 09:06:17
    #39094879
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
Индексы "ниачём".
Сколько записей в таблице items, и сколько из них отбирается запросом (без LIMIT и ORDER BY)?
...
Рейтинг: 0 / 0
05.11.2015, 09:09:18
    #39094883
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
items - 8 миллионов, отбирается 100 тысяч
...
Рейтинг: 0 / 0
05.11.2015, 09:21:30
    #39094898
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
а что с индексами не так?
...
Рейтинг: 0 / 0
05.11.2015, 09:48:33
    #39094930
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
BIS-10-2что с индексами не так?
Да ни один из них не может быть применён хоть чуть эффективнее чем никак для этого запроса. А в остальном всё так.
Первое, что я бы сделал - это создал индекс на таблице section_items по совокупности (section_id,user_id,item_id). Или поменять местами первые два поля.
Затем бы посмотрел, как поведёт себя индекс items (not_date,id,res_id).
...
Рейтинг: 0 / 0
05.11.2015, 09:49:22
    #39094931
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
Впрочем, ENGINE=Aria мне незнаком, возможно, там что-то будет немного иначе.
...
Рейтинг: 0 / 0
05.11.2015, 09:52:46
    #39094934
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
индекс (section_id, item_id, user_id) уже существует
...
Рейтинг: 0 / 0
05.11.2015, 09:53:33
    #39094936
BIS-10-2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE IF NOT EXISTS `section_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `section_id` int(11) NOT NULL,
  `item_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ix_phone` (`section_id`,`item_id`,`user_id`),
  KEY `user_id` (`user_id`),
  KEY `section_id` (`section_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=608096 ;
...
Рейтинг: 0 / 0
05.11.2015, 10:04:06
    #39094949
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
AkinaЗатем бы посмотрел, как поведёт себя индекс items (not_date,id,res_id).может, в обратном порядке? в запросе "<=" как раз по not_date.
...
Рейтинг: 0 / 0
05.11.2015, 10:10:08
    #39094953
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация order by limit
BIS-10-2 , KEY `section_id` - скорее лишний, ибо есть UNIQUE KEY `ix_phone`.

tanglirможет, в обратном порядке?
Может, и так.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация order by limit / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]