Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки! Помогите пожалуйста фронтендеру ) В базе данных хранится классификация продуктов. Сами признаки и возможные значения которые они могут принимать динамические, поэтому всё хранится в нескольких таблицах: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. А теперь я хочу собрать определённые классификации, чтобы получилась таблица вида: productName | classification1 | classification2 | ...... Умнее, чем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ничего не придумал. В принципе работает с приемлемой скоростью, но не оставляет чувство, что это дикий костыль. Подскажите пожалуйста, как сделать оптимальнее? Если суть задачи не понятна - поясню.. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 20:03 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
Вот top 1 без order by это даже не костыль, а еще хуже. А коррелированные подзапросы -- это вполне нормальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 20:06 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Оrder by есть конечно - забыл написать. Честно говоря, меня не вполне устраивает скорость.. может быть можно как-то быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 20:09 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
eonae, Наверняка можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 20:18 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
eonaeможет быть можно как-то быстрее?Может и можно. Только по приведенным фрагментам кода очень трудно догадаться, что же вы хотите получить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 21:09 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
invm, Постараюсь пояснить: В таблице Classifications хранятся признаки, которые могут быть у продукта. Пример признака: "Тип" или "Горячее" Код: sql 1. 2. 3. В таблице ClassificationOptions хранятся возможные значения, которые могут принимать признаки: Код: sql 1. 2. 3. 4. 5. 6. В таблице ClassificationBindings хранятся привязки конкретных продуктов из таблицы Products (упрощённо id и name): Код: sql 1. 2. 3. 4. 5. Теперь я хочу запросить к каким категориям относятся мои продукты в таблице Products. Я могу сделать такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Получу в результате: ------------------------------------------------------- Продукт | Категория | Значение ------------------------------------------------------- Стейк | Тип | Еда Стейк | Прожарка | Средняя ------------------------------------------------------- Но хотел бы получить таблицу такого вида: --------------------------------------------------- Продукт | Тип | Прожарка --------------------------------------------------- Стейк Еда Средняя --------------------------------------------------- Хотя в таблице категорий количество категорий может меняться динамически, в выборке мне это не требуется. Я заранее знаю какие классификации мне нужно подтянуть в качестве столбцов. Один способ, как добиться выполнения моей задачи я уже указал выше. Если есть более оптимальный с точки зрения производительности, буду рад, если наведётся на мысль. Писать за меня не обязательно ) С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 23:15 |
|
||
|
Оптимизация выборки. Можно ли чем-то заменить подзапросы?
|
|||
|---|---|---|---|
|
#18+
eonae, См. pivot ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2019, 23:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39881935&tid=1687062]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 478ms |

| 0 / 0 |
