Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
Ребята, помогите пожалуйста оптимизировать запрос. есть таблица pictures Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. делаю выборку с сортировкой pwidth+pheight (ширина+высота рисунка) Код: sql 1. Выводится список всех рисунков по данной сортировки. Потом делаю запрос для выбора одного рисунка по его PID Код: sql 1. задача: необходимо найти предыдущие и следующие элементы по данной сортировки относительно текущего PID решил задачу топорно т.к. не так много рисунков, всего 4 000, и запрос занимает (0.0090сек) нахожу его позицию $start через запрос: Код: sql 1. после его смещаю на -5 и проверяю на отрицательное число Код: php 1. 2. 3. 4. после делаю основной запрос: Код: sql 1. и получаю по середине данную картинку и 4 следующие и 4 предыдущие. Как можно оптимизировать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 08:39 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
Вот что получилось: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Соответственно 3898 - заданный pid, 9 - заданный интервал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 11:51 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
Но это не особо претендует на оптимизацию. Просто засунул всё в один запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:08 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
shplace, спасибо! интересный вариант, но он дольше почти в 2 раза :( 0.0253 сек. мои 2 запроса сейчас показывают 0.0063 + 0.0078 = 0.0141. Может еще кто-то предложит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:30 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
darknesmonkshplace, спасибо! интересный вариант, но он дольше почти в 2 раза :( 0.0253 сек. мои 2 запроса сейчас показывают 0.0063 + 0.0078 = 0.0141. Может еще кто-то предложит? Я попробовал на базе в 4 млн записей. Ваш показывает 3,35 + 2,51 = 5,86 секунд. Мой 6,77 секунд. Дольше. Зато данные были согласованы. Я проверял в момент заполнения базы. Но вот что странно - Ваш метод не работает на такой таблице. Не могу понять почему. Беру pid из середины примерно: Код: sql 1. Результат: 898148 Далее уменьшаю его на 5, получается 898143. Далее: Код: sql 1. Результат Вашего метода (оставил только колонку pid): 1809157 1818324 1826354 1854740 1865868 1893597 1914456 1933137 1948214 Мой выдаёт вот что: 1965958 1970319 1984287 1990827 2000000 2006517 2007773 2011192 1701342 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:46 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
shplace, у меня работает и Ваш метод и мой. только у меня полей больше, пришлось перечислять их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 14:22 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
darknesmonk, как бэ не лучший ты запрос для оптимизации выбрал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 16:53 |
|
||
|
Соседние записи таблицы после сортировки.
|
|||
|---|---|---|---|
|
#18+
darknesmonkделаю выборку с сортировкой pwidth+pheight (ширина+высота рисунка)Крайне неудачный выбор. Эта сортировка гарантирует фуллскан и файлсорт. Если сортировка по этому критерию действительно очень важна - пересмотрите структуру хранения. Первый вариант - дополнительное поле, хранящее эту сумму и обновляемое из триггера. Правда, получается избыточность и потенциальное рассогласование данных. Второй вариант - то же, но не дополнительно, а взамен одного из двух полей. Если одно из этих полей не участвует в обработках (сортировках, отборах и связываниях), а только отдаётся в выходном наборе - это лучший вариант. В случае же, если версия сервера не младше 5.7.6, возможно использование GENERATED COLUMN . Первый вариант аналогичен STORED полю, второй - VIRTUAL полю. На InnoDB оба варианта допускают создание по ним индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39482909&tid=1830557]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 375ms |

| 0 / 0 |
