|
|
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый день! Объединил 6 таблиц, вывод запчастей к авто по ид авто. Вывод 29 записей из таблицы goods_car и подставка к ним данных из других таблиц. Помогите вывод 29 записей идет 2 секунды. $car_id = ID авто Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Таблица с товарами Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Таблица с производителями Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таблица товары к авто (сравнение по code,manufacturer_id) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таблица цены (сравнение по code,manufacturer_id) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Таблица поставщики (сравнение по code,manufacturer_id) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Таблица корзина (сравнение по code,manufacturer_id есть ли товар в корзине) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Почему сравнение идет по двум полям (code,manufacturer_id), а не по code, так как code может повториться. Один и тот же code может быть на разный авто. Пример: code фары форда, может быть от капота опеля. Пришлось сравнивать еще и по (manufacturer_id) производителю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2016, 17:24 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Как минимум, не хватает индекса по `goods`.`code`. А вот цена с корзиной вряд ли могут соединятся через номер и производителя, т.к. это не даст вам держать в базе одинаковые запчасти, например, различающиеся производителем, цветом и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2016, 18:08 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
P.S. И, кстати, это соединение, а не объединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2016, 18:10 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
miksoft, различаются именно по производителю и коду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2016, 18:21 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Nikolay_Lemmiksoft, различаются именно по производителю и кодуНе путайте производителя запчасти и производителя автомобиля. Для соответствия между запчастью и автомобилем нужен номер и производитель автомобиля (по чьему каталогу этот номер). Но запчасти с одинаковым номером и производителем автомобиля могут иметь разных производителей. Например, тот же самый капот с номером 1160059 и производителем автомобиля OPEL может быть производства самого OPEL, а может POLCAR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2016, 18:28 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Nikolay_Lemmiksoft, различаются именно по производителю и коду ...поставьте перед запросом волшебное слово EXPLAIN и выдайте результат сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 04:30 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
miksoftNikolay_Lemmiksoft, различаются именно по производителю и кодуНе путайте производителя запчасти и производителя автомобиля. Для соответствия между запчастью и автомобилем нужен номер и производитель автомобиля (по чьему каталогу этот номер). Но запчасти с одинаковым номером и производителем автомобиля могут иметь разных производителей. Например, тот же самый капот с номером 1160059 и производителем автомобиля OPEL может быть производства самого OPEL, а может POLCAR. Есть таблица goods, в ней артикул запчасти (code) и производитель этой запчасти (manufacturer_id). Производитель не авто, а запчасти. У капота для OPEL, может быть номер 252585, производитель BOSCH и у фары для KIA такой же номер 252585, но производитель MOBIS. Поэтому есть таблица goods_car, которая связывает между собой запасть и авто. И что бы в KIA не попал капот от OPEL, сравнение идет по code и manufacturer_id. После установки индекса на code, все заработало шустро. Я не гуру в SQL и думал, что на поле VARCHAR индексы не ставят. Вчера прочел по индексы и вроде более менее разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 19:11 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
javajdbcNikolay_Lemmiksoft, различаются именно по производителю и коду ...поставьте перед запросом волшебное слово EXPLAIN и выдайте результат сюда Вставляю EXPLAIN перед SELECT, сыпятся ошибки на php. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 19:12 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Nikolay_LemУ капота для OPEL, может быть номер 252585, производитель BOSCHНу так может существовать другой капот для OPEL с номером 252585, другого производителя (или другого цвета, например). И скорее всего он будет иметь другую цену. Да и покупатель вряд ли будет рад, если в его корзине не тот товар окажется, пусть и с тем же номером для того же автомобиля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 19:39 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Nikolay_Lemjavajdbcпропущено... ...поставьте перед запросом волшебное слово EXPLAIN и выдайте результат сюда Вставляю EXPLAIN перед SELECT, сыпятся ошибки на php.Так это надо не в коде делать, а просто отдельно выполнить запрос. Например, в phpMyAdmin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 19:41 |
|
||
|
Медленный JOIN, объединение 6 таблиц
|
|||
|---|---|---|---|
|
#18+
Nikolay_Lem, Кстати, очень часто бывает и обратная ситуация - когда у одного товара много пар номер-производитель. Максимум, который я встречал - более тысячи. Поэтому эти данные надо выносить из таблицы товаров отдельную таблицу. И еще: Nikolay_Lemпроизводитель BOSCHв таблице goods нет поля для ссылки на этот BOSCH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2016, 20:01 |
|
||
|
|

start [/forum/search_topic.php?author=proLamer&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 561ms |
| total: | 717ms |

| 0 / 0 |
