прежде всего спасибо заранее, что нашли время, чтобы прочитать и опубликовать любые ответы, я ценю это!
У меня есть две таблицы, одна для свойств, где она хранит информацию о каждой собственности / имуществе.Другая таблица предназначена для переводов, где хранятся такие данные, как заголовок и описание, на каждом языке, который пользователь решает написать.
В таблице свойств в столбце t_reference будет храниться «ссылка» перевода в переводах.Таблица.Это числовое значение, которое будет равно 0, если для этого конкретного элемента нет перевода.
В таблице переводов предыдущая ссылка t хранится как «ссылка».Вывод таблицы:
id int(11)
reference mediumint(9)
lang varchar(5)
is_default tinyint(4)
t_title varchar(255)
t_description text
Теперь, чтобы получить информацию, я использую этот запрос:
SELECT
p.id,
p.t_reference,
p.category,
IFNULL(tr.t_title, def.t_title) 'title',
IFNULL(tr.t_description, def.t_description) 'description'
FROM properties p
LEFT OUTER JOIN translations tr
ON (p.t_reference > 0 AND p.t_reference = tr.reference AND tr.lang = 'de_DE')
LEFT OUTER JOIN translations def
ON (p.t_reference > 0 AND p.t_reference = def.reference AND def.is_default = 1)
WHERE p.visibility='1'
p - таблица свойств, tr - данные таблицы переводов, ЕСЛИ перевод существует, def - язык по умолчанию для данных таблицы перевода.Проблема, с которой я сталкиваюсь, заключается в том, что при наличии 300 свойств этот запрос увеличивает скорость визуализации страницы примерно на 80 мс.
Я пытаюсь реализовать многоязычный ввод для клиента.Раньше заголовок и описание каждого свойства просто сохранялись в столбце, но теперь, поскольку клиент должен иметь возможность вводить определенный текст для разных языков, вместо использования жестко закодированных столбцов, таких как, например, «title_en», «title_de»Я думал, что это будет лучший способ сделать это.Единственная проблема заключается в скорости запроса.
Прежде всего, есть ли способ улучшить этот запрос, чтобы ускорить процесс?
Во-вторых, будет ли это считаться плохой практикой,вместо использования JOIN в самом запросе.Сначала соберите все данные свойств, а затем выполните отдельный запрос к таблице переводов, выполнив поиск по ссылке.