Автор оригинала: lucas
Таблица "товары": id, name, description
Таблица "свойства": id, name
Таблица-связка: id товара, id свойства, еще что-то.
-~{}~ 12.06.04 17:36:
В первых двух таблицах id -- primary key.
В последней primary key -- id товара + id свойства.
Все это можно будет прекрасно проjoinить.
2lucas Kucovsky прав, у меня именно такая структура таблиц. И я инджою. А толку от этого?
А что значит:
В последней primary key -- id товара + id свойства.. У меня id товара и id свойства это посто индексы. Как сделать primary key -- id товара + id свойства?
-~{}~ 12.06.04 19:54:
2Kucovsky Да проблема именно в 3 таблице, из-за нее возникают дополнительные ряды. И приходится извращаться с рандомной сортировкой по ай ди товаров и сортировкой по ай ди свойств товаров (для каждого товара).
Насчет одного запроса и потом еще в цикле запроса для каждого товара. Так именно сейчас и сделано. Но это же нагрузка на БД. А нагрузка важна (т.к. базу будут дергать оч часто). Поэтому я пытаюсь уйти от этого сейчас.
Только что попробовал с TEMPORARY TABLE. Вроде работает и вроде все ок. НО
Свойства все равно ДЖОИНЯТСЯ не отсортированными. А если во втором запросе поставить ORDER BY, то отсортируется вся таблица. Т.е. я так понимаю придется делать 2 времнеммные таблицы. Второй временной будет таблица-связка отсортированная по id, id_svoistva? Или я что то упустил.
-~{}~ 12.06.04 20:21:
Сделал с 2-мя времнными таблицами, все заработало. НО сильная потеря в скрости запрос занимает: 0.32 сек...
И второе меня беспокоит то, что при какой либо серьезной нагрузке на БД создание, создание-удаление времнных таблиц еще больше увеличт время запроса. И не будет ли конфликтов в плане одной и той же таблицы (времнной) в БД? Я читал ман, но там как то непонятно про это написано