Возможно ли оптимизировать получение данных из двух таблиц
В общем есть две таблицы
user_items и user_item_params Получаю из них данные следующим образом: PHP код:
|
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
Я так понимаю тебе нужен JOIN? http://ru.wikipedia.org/wiki/Join_(SQL)
|
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
Мне надо передать на клиент результат в формате json, join мне даст одну таблицу, придется делать хитрый алгоритм для преобразования если я хочу, чтобы результат выглядел как сейчас.
|
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
оптимально все сделать одним запросом, а цикл потом для обработки все равно нужен, т.к. mysql в json может выбрать тока при EXPLAIN, и то с версии 5.6
вроде так: PHP код:
|
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
Посоветовали мне получить параметры итемов отдельно одним запросом и получилось следующее
PHP код:
А еще я обдумывал вариант с параметрами в поле первой таблицы в виде json строки... |
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
Сразу подмечу, что если у тебя индексация в обоих таблицах хорошо настроина, то запросы будут весьма оптимальны даже при двух запросах.
Но. Тут важна суть не в запросах, а в том кто эти данные получает и что с ними делает. Например если у тебя игра происходят матчами, и по геймплаю шмот менять можно только между матчами, то при старте матча ты получаешь эти данные один раз, что совсем не критично. А если можно менять шмот (влиять на бд) во время матча, тогда загружай данные в начале матча, и храни в процессе что обсчитывает матч, и при изменениях - меняй игровые данные и посылай UPDATE в бд, но не перезагружай данные. Тупой кеш в памяти. Да и насчёт JSON'а, я тебе настоятельно рекомендую пересмотреть хотя бы на будущее представление о том как данные хранятся в БД. Ты используешь SQL базу данных, с таблицами, но преобразуешь в вложенные JSON документы. Посмотри в сторону NoSQL баз данных, таких как MongoDB - легко ставиться, очень проста в использовании. Важный плюс в том что там нету таблиц, и всяких JOIN'ов (хотя это сильно влияет на то как данные хранятся, и не всегда подойдёт), зато есть сложные формы объектов, с вложенностями, массивами, хеш таблицами и т.п. Что как я вижу просто идеально подходит под то что ты пытаешься сделать в коде выше. |
Ответ: Возможно ли оптимизировать получение данных из двух таблиц
Спасибо за советы. NoSQL в данном случае не подходит, т.к. я на хостинг ничего не могу поставить сам.
По поводу получения - данные меняться будут редко, и не во время боя. И я всетаки решил сделать все в первой таблице. Я создал в ней текстовое поле params и в виде json буду хранить там параметры. В итоге получилось вот так: PHP код:
|
Часовой пояс GMT +4, время: 09:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot