|
SQL. Время запроса увеличивается непропрорционально. | ☑ | ||
---|---|---|---|---|
0
DirecTwiX
17.03.13
✎
14:26
|
Запрос типа:
SELECT at.T, aa.A, Cnt FROM (SELECT T_id, A_id, COUNT(*) AS Cnt FROM (SELECT T_id, A_id FROM audio limit 8000000) a GROUP BY A_id, T_id HAVING Cnt>1 ORDER BY Cnt DESC LIMIT ".$n.") q1 INNER JOIN a_T at ON q1.T_id=at.id INNER JOIN a_T aa ON q1.A_id=aa.id На A_id, T_id есть составной индекс, который работает) Во внутреннем запросе есть число, которое я и изменяю. Картина следующая: 500к - 0.36 1кк - 0.77 2кк - 1,7 4кк - 3,44 8кк - 62 Первый раз запрос с 4кк тоже выдал 60 секунд, но повторные начали выполняться за 3,44. Куда копать, может кто знает?) |
|||
1
GANR
17.03.13
✎
14:47
|
Во второй раз работает быстрее, так как СУБД использует кэш. Возможно, при 8К СУБД просто не делает и не использует кэш, так как иначе забьется вся оперативная память.
|
|||
2
DirecTwiX
17.03.13
✎
15:20
|
Грусть.. А я уже обрадовался, что запросы достаточно быстро выполняются.
Спасибо |
|||
3
GANR
17.03.13
✎
17:43
|
(2) Возможно, если покрутить настройки СУБД, то она даст такой большой кэш. Но я лично, не знаю что именно делать, может тут http://sql-ex.ru/ прольют свет на проблему.
|
|||
4
bahmet
17.03.13
✎
17:53
|
Запрос какой то извратный. Попахивает отсутствием понимание что и как храним и для чего.
|
|||
5
GANR
17.03.13
✎
17:59
|
(4) да это эксперимент, имхо, рабочий запрос не надо в ветку выкладывать - там поди от 100 строк
|
|||
6
DirecTwiX
17.03.13
✎
21:07
|
(4) А что извратного то? Да, первый селект может лишний, а так всё норм - обычный селект с джойнами
|
|||
7
acsent
17.03.13
✎
21:12
|
пиши запросы в 1с форматировании, а то же нихрена не понятно про что там
|
|||
8
Demiurg
18.03.13
✎
01:54
|
(0) в подобных вопросах принято показывать планы запроса у хорошего и плохого вариантов...
|
|||
9
DirecTwiX
18.03.13
✎
08:10
|
(8) Планы?
|
|||
10
Лефмихалыч
18.03.13
✎
08:41
|
(0) запрос говно и дело не в индексах.
1. Используй временные таблицы. 2. Нафига, вот нафига в самом внетреннем запросе выгребать все данные, если тебе нужны только DISTINCT? 3. Зачем два inner join с одной и той же таблицей? Один надо удалить и, если она не большая, то это соединение имеет смысл перенести в самый внутренний селект, где 8 млн |
|||
11
DirecTwiX
18.03.13
✎
13:55
|
1. Это может сократить время в моём случае? Что-то сомневаюсь
2. Там итак все различные (по построению таблицы) 3. Таблицы разные - описался, когда на форум вставлял Какой смысл переносить соединение внутрь вообще? Если на входе миллионы строк, а на выходе до 1000? |
|||
12
Demiurg
18.03.13
✎
19:02
|
(9) да, планы, не знакомые слова что ли?
|
|||
13
DirecTwiX
18.03.13
✎
21:14
|
(12) Планы таблиц не знакомы)
|
|||
14
DirecTwiX
18.03.13
✎
22:11
|
Или это озночает состав?
Все id - int Через соединение VARCHAR прикрепляю |
|||
15
фобка
18.03.13
✎
23:07
|
sql serv использует не только кэш, но и статистики.
1. 60 сек на запрос это много. 2. Зачем здесь нужен OrderBy? |
|||
16
sapphire
18.03.13
✎
23:19
|
(0) Переписать запрос
|
|||
17
bahmet
18.03.13
✎
23:45
|
Более того, переписывать структуру и обслуживающий персонал менять)
|
|||
18
bahmet
18.03.13
✎
23:47
|
Для начала выкинь нах свой самый внутренний запрос на 8 млн
|
|||
19
DirecTwiX
19.03.13
✎
00:13
|
(15)
1. Знаю) 2. Нужно отсортировать по популярности (16) Да как его переписать - он и так примитвнейший (17) Над структурой думал, но размер базы вырастет минимум в 10000 раз (18) Чтобы я по десять минут ждал? |
|||
20
КонецЦикла
19.03.13
✎
00:24
|
Чего ваяешь?
Работаешь со своей структурой данных или лезешь в чужую? Засыпал всех каверзными вопросами, может просто почитать-подумать? |
|||
21
bahmet
19.03.13
✎
01:00
|
(19) а ты запрос наваял чтоб чтото осмыленное получить или хоть бы, главное быстро?)
Без знания природы полей, колва значений их, дисперсии и прочего, можно лишь посоветовать ТСу сидеть в конфигураторе 1с и не рыпаться |
|||
22
DirecTwiX
19.03.13
✎
01:15
|
(20) Своя структура.
Ваяю сайт. Суть такова: есть люди, у них есть "предпочтения" (предпочтение = комбинация двух значений id, по которым и группирую). Таблица имеет вид: id1, id2, user_id У пользователя в среднем 200 предпочтений Нужно найти самые популярные предпочтения (21) Осмысленное конечно) И быстр надо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |