|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Здравствуйте. SELECT @i := @i + 1 AS num, steamid, name, cmd_time FROM ( SELECT steamid, MAX(name) name, SUM(cmd_time) cmd_time FROM 227_27015 GROUP BY steamid ORDER BY 3 DESC LIMIT 0, 15 ) x, ( SELECT @i:=0) z ORDER BY 4 DESC На картинке описал подробно суть проблемы, не могу никак сформировать запрос чтоб выводило последнее имя игрока в таблице, помогите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 07:55 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Версия MySQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 11:01 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Версия сервера: 10.1.43-MariaDB-1~xenial - mariadb.org binary distribution Спс что отозвались) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 11:04 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Хреново... оконные функции недоступны. Тады вроде вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 11:19 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Нажал отправить запрос и зависло вот так...( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 11:28 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Ты хоть логику-то проверил? начиная от самого внутреннего запроса... выполни сперва Код: sql 1. 2. 3.
Убедился, что не бред? тогда выполни Код: sql 1. 2. 3. 4. 5.
И опять смотри... И так далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 12:38 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Понятно что ничего не понятно.. запрос сильно сложный. Как не крути не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 18:09 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Если бы я знал как составить я бы не спрашивал ответа на форуме.Но спасибо что хоть кто-то ответил обычно на этом форуме все воды в рот набрали. Если соизвелите помочь готовым запросом и ответить на пару логический вопросов по нему то будет здорово. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 18:31 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Тогда выгружайте (или воссоздавайте) структуру, делайте образец данных (10-20 записей), и выкладывайте всё это вместе с требуемым результатом для этих данных. Будем крутить... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 19:00 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 19:11 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 19:12 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Прикрепил таблицу и требуемый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 19:12 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Отлично. Копирую всё это в online fiddle (именно так нужно в будущем предоставлять материалы для тестирования). Добавляю свой запрос (и предварительные отладочные шаги для отслеживания логики). Всё работает как часики, и даёт на первый взгляд верный результат (и уж точно тут виснуть не на чем...). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 20:07 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Спасибо, на маленькой таблице действительно работает, но вот на уже рабочей реальной таблице при отправки запроса через phpmyadmin по центру экрана "Загрузка..." и все повисло. ( https://dropmefiles.com/YC4wZ - тут выкинул таблицу) В базе ~25000 строк (зафиксированных сессий). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 20:23 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Проверил на чуть меньше таблице, ответа ждал без преувеличения секунд 30)) По всей видимости структура базы отвратная для таких задач.. порекомендуйте как устроить базу чтоб работало все как часики.. или запрос можно как-то оптимизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 20:27 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Опробовал на полном дампе дома (MySQL 8.0.18). Запросы из fiddle (записей - 25225 всего, 3538 уников) выполнились за 0,07; 0,16; 7,86 и 8,23 секунды. Система Windows 10 Pro x64, проц Е7500, 2,93 Ггц, ОЗУ 4 Гб, все влияющие настройки сервера дефолтные. Так что с запросом проблем НЕТ. Проблемы или в сервере (MySQL, PHP или web), или в клиенте. Ну и индексов для этого запроса можно добавить - но это рюшечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 21:34 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Спасибо вам больше за помощь, думаю стоит оптимизировать сбор данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 23:38 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Вариант, который отрабатывает за 0.12с без всяких индексов на дохлой виртуалке c 1CPU 2.4ГГц, 1Гб RAM Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 02:23 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
0,03с на той же виртуалке при наличии доп. индекса по steamid Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 13:45 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Karbafos, ого ваш предпоследний вариант у меня занял Запрос занял 0.3071 сек, спасибо большое.. я в mysql к сожалению не силен, но как вы думаете стоит ли мне менять структуру таблицы или текущая структура считается вполне приемлемой для получения данных которые мне нужно? Может дадите какие-то свои опытные рекомендации как бы вы ее изменили? И еще давайте попоробуем разобраться чему 1 вариант запроса у меня выполняется 131.9464 сек.? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2020, 10:02 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Последний вариант разместил в свой код, оч круто, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2020, 10:46 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Еще 2 вопроса интересуют: 1 - как получить все последние имена пользователей и их steamid 2 - как получить последние имена пользователей и их steamid из нескольких баз данных например из 227_2017, 331_27015, 123_27015 .. тут нужно учесть время последнего подключения игрока по полю end на любой из этих среверов.. (227_2017, 331_27015, 123_27015 ) ну и steamid не должны повторяться, берем только самые последние из баз данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2020, 13:02 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Tonny96 Последний вариант разместил в свой код, оч круто, спасибо! Рано, ибо это не последний возможный вариант. Наиболее оптимальный, если двигаться в эту сторону это Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
при этом у тебя в таблице должно быть всего два индекса: pk на newid (он есть внезапно) и второй (steamid, cmd_time) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 03:41 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Tonny96 Karbafos, ого ваш предпоследний вариант у меня занял Запрос занял 0.3071 сек, спасибо большое.. я в mysql к сожалению не силен, но как вы думаете стоит ли мне менять структуру таблицы или текущая структура считается вполне приемлемой для получения данных которые мне нужно? Может дадите какие-то свои опытные рекомендации как бы вы ее изменили? И еще давайте попоробуем разобраться чему 1 вариант запроса у меня выполняется 131.9464 сек.? Нормальная структура, там есть всё необходимое за исключением пары индексов. Мне не нравится использование переменной в запросе для нумерации, лучше бы это делать в коде. Кто проектировал базу, включая схему шардирования? Все вопросы лучше задавать этому человеку, ибо, не зная полную архитектуру, можно наломать дров изменениями. Первый вариант делает слишком много self join и не использует pk. Чтобы понимать что к чему крайне рекомендую освоить конструкцию EXPLAIN и пройтись по всем вариантам, которые есть в данной теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 03:59 |
|
Получить последнее Имя пользователя
|
|||
---|---|---|---|
#18+
Tonny96 Еще 2 вопроса интересуют: 1 - как получить все последние имена пользователей и их steamid 2 - как получить последние имена пользователей и их steamid из нескольких баз данных например из 227_2017, 331_27015, 123_27015 .. тут нужно учесть время последнего подключения игрока по полю end на любой из этих среверов.. (227_2017, 331_27015, 123_27015 ) ну и steamid не должны повторяться, берем только самые последние из баз данных. Тут уж сам пробуй, может union all поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 04:03 |
|
|
start [/forum/topic.php?fid=47&msg=39908662&tid=1828790]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 253ms |
0 / 0 |