Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
Подскажите, возможно ли ускорить выполнение запроса типа: Код: sql 1. 2. 3. 4. FOREIGN KEY стоит, но время выполнения долгое, даже не на очень большом объеме. Заполнил тыс. 50 и секунд 10 выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2017, 03:12 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2017, 03:40 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
javajdbc, так это же не то. Мне нужно получить последнюю зарплату каждого работника и по ней отсортировать. А там сортировки нет. И проблема возникает из-за скорости сортировки по последней зарплате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2017, 01:43 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
z3r9javajdbc, так это же не то. Мне нужно получить последнюю зарплату каждого работника и по ней отсортировать. А там сортировки нет. И проблема возникает из-за скорости сортировки по последней зарплате. Итак: две задачи -- (1) найти последнюю зарплату и (2) отсортировать Задача (1) -- см ФАК, вторая -- надо смотреть в каждом конкретном случае. Если после ФАКа у вас останутся проблемы со скоростью, то выдайте: 1. DDL обоих таблиц (и чтоб индексы были видны) 2. точный SQL который вы использовали (один или парочку из ФАКа) 3. замерьте и озвучте 3 раза скорость выполнения с NO_CACHE хинтом 4. выдайте EXPLAIN 5. уточните какой вариант задачи (ФАК Т-1,2,3 или 4) 6. Уточните задачу -- надо выдать ВСЕ 50К записей? на екран? или 20 самых верхних? или что? ...сам запрос (после оптимизации, без вывода на екран) на среднем железе должен , по идее, выполнятся за 1-20 милисекунд...10 секунд -- это скучно, Похоже у вас даже индекса на (t1_id,created_at) нет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2017, 02:37 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
z3r9Мне нужно получить последнюю зарплату каждого работника и по ней отсортировать. А там сортировки нет.А Вы не знаете, как в запрос добавить сортировку? ну так подскажу - это предложение ORDER BY. А в качестве критерия сортировки надо указать не поле или выражение, а просто номер по порядку поля в выходном наборе (какой-нибудь ORDER BY 3). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2017, 07:43 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
javajdbc, спасибо большое за пояснения. Уменьшил выборку до 20к и поставил индекс по t1_id и created_at. автор1. DDL обоих таблиц (и чтоб индексы были видны) Там только связь один ко многим и индекс который вы написали t1_id и created_at. автор2. точный SQL который вы использовали (один или парочку из ФАКа) 3. замерьте и озвучте 3 раза скорость выполнения с NO_CACHE хинтом 4. выдайте EXPLAIN Запрос 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARYuNULLindexNULLusers_..._id_name_unique1026NULL17340100.00"Using index; Using temporary; Using filesort"1PRIMARYp0NULLeq_refPRIMARYPRIMARY4func1100.00"Using where"2"DEPENDENT SUBQUERY"p1NULLrefposts_user_id_created_at_indexposts_user_id_created_at_index4db.u.id2100.00"Using where; Using index; Using filesort" Время выполнения: 1.25 сек Запрос 2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARYuNULLindexNULLusers_..._id_name_unique1026NULL17340100.00"Using index; Using temporary; Using filesort"2"DEPENDENT SUBQUERY"p1NULLrefposts_user_id_created_at_indexposts_user_id_created_at_index4db.u.id2100.00"Using index condition; Using filesort" Время выполнения: 0.83 сек Запрос 3 Код: sql 1. 2. 3. 4. 5. 6. 7. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARY<derived2>NULLALLNULLNULLNULLNULL51294100.00"Using where; Using temporary; Using filesort"1PRIMARYpNULLeq_ref"PRIMARY и posts_user_id_created_at_index"PRIMARY4zz.max_id1100.00NULL1PRIMARYuNULLeq_refPRIMARYPRIMARY4db.p.user_id1100.00NULL2DERIVEDp1NULLindexposts_user_id_created_at_indexposts_user_id_created_at_index9NULL51294100.00"Using index" Время выполнения: 0.28 сек автор5. уточните какой вариант задачи (ФАК Т-1,2,3 или 4) Больше всего похоже на Т-1,2. У меня статистика, нужно вывести последнюю проверку, типа как последнюю зарплату работника. И там 2 таких параметра. Я по этому в SELECT и указывал. автор6. Уточните задачу -- надо выдать ВСЕ 50К записей? на екран? или 20 самых верхних? или что? 20 самых верхних. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 18:02 |
|
||
|
Подскажите как ускорить запрос с сортировкой по последнему значению из другой таблицы
|
|||
|---|---|---|---|
|
#18+
z3r9javajdbc, спасибо большое за пояснения. Уменьшил выборку до 20к и поставил индекс по t1_id и created_at. автор1. DDL обоих таблиц (и чтоб индексы были видны) Там только связь один ко многим и индекс который вы написали t1_id и created_at. автор2. точный SQL который вы использовали (один или парочку из ФАКа) 3. замерьте и озвучте 3 раза скорость выполнения с NO_CACHE хинтом 4. выдайте EXPLAIN Запрос 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARYuNULLindexNULLusers_..._id_name_unique1026NULL17340100.00"Using index; Using temporary; Using filesort"1PRIMARYp0NULLeq_refPRIMARYPRIMARY4func1100.00"Using where"2"DEPENDENT SUBQUERY"p1NULLrefposts_user_id_created_at_indexposts_user_id_created_at_index4db.u.id2100.00"Using where; Using index; Using filesort" Время выполнения: 1.25 сек Запрос 2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARYuNULLindexNULLusers_..._id_name_unique1026NULL17340100.00"Using index; Using temporary; Using filesort"2"DEPENDENT SUBQUERY"p1NULLrefposts_user_id_created_at_indexposts_user_id_created_at_index4db.u.id2100.00"Using index condition; Using filesort" Время выполнения: 0.83 сек Запрос 3 Код: sql 1. 2. 3. 4. 5. 6. 7. idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1PRIMARY<derived2>NULLALLNULLNULLNULLNULL51294100.00"Using where; Using temporary; Using filesort"1PRIMARYpNULLeq_ref"PRIMARY и posts_user_id_created_at_index"PRIMARY4zz.max_id1100.00NULL1PRIMARYuNULLeq_refPRIMARYPRIMARY4db.p.user_id1100.00NULL2DERIVEDp1NULLindexposts_user_id_created_at_indexposts_user_id_created_at_index9NULL51294100.00"Using index" Время выполнения: 0.28 сек автор5. уточните какой вариант задачи (ФАК Т-1,2,3 или 4) Больше всего похоже на Т-1,2. У меня статистика, нужно вывести последнюю проверку, типа как последнюю зарплату работника. И там 2 таких параметра. Я по этому в SELECT и указывал. автор6. Уточните задачу -- надо выдать ВСЕ 50К записей? на екран? или 20 самых верхних? или что? 20 самых верхних. ...ок... 1. прошу пардона за поздний ответ, был в отпуске на острове свободы (без интернета)... 2. уточните сортировку -- по ИД или по CREATE_AT... можно подозреть что они по факту одинаково сортируют, однако ИД может быть IDЕNTITY (хорошая сортировка) а время может быть одинаковым (плохо для сортировки.) Прeдположим сортировку по ID. 3. Uzеров можно подключить ПОСЛЕ выбора последних зарплат и отсечки ТОП 20. нужно иметь индеx posts(user_id,id) . Примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 09:57 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39488811&tid=1830531]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 363ms |

| 0 / 0 |
