powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Требуется помощь в оптимизации запроса
16 сообщений из 66, страница 3 из 3
Требуется помощь в оптимизации запроса
    #38767827
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну поднялся фидл, я проверил.
http://sqlfiddle.com/#!2/cfbb99/2
версия 5.5.32(по умолчанию у них такая)
21 секунда, 25 секунд...
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767831
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот тест ранд()-ов на той же версии: http://sqlfiddle.com/#!2/cfbb99/12
Первый запрос выполняется 1,3-1,4 секунды, второй - в пределах погрешности измерений.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767833
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

Увы, на версии 5.6.6 m9 такая же ерунда :(
http://sqlfiddle.com/#!9/44f16/1
(он не лежит, но периодически дико тормозит)
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767846
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirНу поднялся фидл, я проверил.
http://sqlfiddle.com/#!2/cfbb99/2
версия 5.5.32(по умолчанию у них такая)
21 секунда, 25 секунд...Пришлось добавить commit;, а то отрабатывало моментально и давало пустой набор данных в итоге.
У меня стабильно получается 11,4 секунды.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767851
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttanglirНу поднялся фидл, я проверил.
http://sqlfiddle.com/#!2/cfbb99/2
версия 5.5.32(по умолчанию у них такая)
21 секунда, 25 секунд...Пришлось добавить commit;, а то отрабатывало моментально и давало пустой набор данных в итоге.
У меня стабильно получается 11,4 секунды.Переключил на 5.6.6 - стало 3,3-3,4 секунды. План вроде бы не изменился.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767853
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftУ меня стабильно получается 11,4 секунды.а должно быть 0 секунд - там всего-то и надо, что 20 раз дёрнуть индекс
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #38767860
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ранды на 5.6.6 получше смотрятся, но всё равно 370мс против 160мс - многовато. И планы разные - первый с using index, а второй с optimized away.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008814
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В прошлый раз я остановился на этой реализации:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT *
FROM game AS r1
JOIN
(
SELECT (RAND() * (SELECT MAX(id) FROM game)) AS id
) AS r2
WHERE r1.id >= r2.id
#ORDER BY r1.id ASC
LIMIT 15;




Сегодня же вернулся к этому запросу, поразмыслив получился другой вариант, который лучше варианта выше, т.к. выбирается действительно 15 разных случайных записей из таблицы. Скорость выполнения запроса - соизмерима с выше приведённым запросом в районе 0.100 сек.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT `game`.*
FROM (
    SELECT id
    FROM `game`
    ORDER BY RAND()
    LIMIT 15
)  
AS ids 
JOIN `game` ON (`game`.id = ids.id)



Хотелось бы узнать ваше мнение, стоит ли использовать такой вариант с ORDER BY RAND()? На данный момент данные по таблице:
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008816
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008823
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
okuznetsov

Ошибся, верный скриншот ниже:
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008829
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
okuznetsovХотелось бы узнать ваше мнение, стоит ли использовать такой вариант с ORDER BY RAND()?Если время выполнения запроса вас устраивает, то почему бы и нет?
Но учтите, что оно будет расти линейно с ростом количества записей в таблице или даже быстрее.

Я только не понял, зачем вы джойните таблицу саму на себя по первичному ключу?
Почему не так:
Код: sql
1.
2.
3.
4.
SELECT *
FROM `game`
ORDER BY RAND()
LIMIT 15

?
Хотя при очень большом количестве записей, возможно, вариант с джойном окажется быстрее.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008833
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Скриншоты лучше делать в формате PNG с 256 цветами. Так и размер файла будет меньше, и текст замыливаться не будет.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008849
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
okuznetsov, ну если вас устраивает производительность ордер бай ранд, то почему бы и нет. Нормальный-то вариант мускль асиливать так до сих пор и не умеет...
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008855
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
Я только не понял, зачем вы джойните таблицу саму на себя по первичному ключу?
Почему не так:
Код: sql
1.
2.
3.
4.
SELECT *
FROM `game`
ORDER BY RAND()
LIMIT 15

?

Хотя при очень большом количестве записей, возможно, вариант с джойном окажется быстрее.



понятно, что нельзя использовать эту конструкцию для большой таблицы, при этом если ещё
планируется рост данных в таблице в будущем, т.к. данный запрос со временем начнёт появляться
в топе медленных запросов на сервере.

Как раз этот запрос мы и оптимизировали в этой теме выше, первоначально он был таким как вы
написали.

Всё верно, запрос с джойнами оказался намного быстрее.
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008856
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftP.S. Скриншоты лучше делать в формате PNG с 256 цветами. Так и размер файла будет меньше, и текст замыливаться не будет.

хорошо, спасибо
...
Рейтинг: 0 / 0
Требуется помощь в оптимизации запроса
    #39008858
okuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirokuznetsov, ну если вас устраивает производительность ордер бай ранд, то почему бы и нет. Нормальный-то вариант мускль асиливать так до сих пор и не умеет...

Согласен, не умеет. Спасибо.
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Требуется помощь в оптимизации запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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