правда что бы делать такие запросы база должна быть грамотная и если message.id или roles.id_user не будет то мы вернемся к моей проблеме о которой я и задавал вопрос. Чесно я думал что есть вариант с подзапросом в FROM
чето я запутался а почему explain показывает меньше ROW при таком запросе? и без индексов быстрее делается?
ctekjlo [sql]EXPLAIN SELECT * FROM `Table1`, `Table2` WHERE `Table1`.`ID` = `Table2`.`ID`[/sql] Код (Text): id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Table2 ALL PRIMARY NULL NULL NULL 3 1 SIMPLE Table1 eq_ref PRIMARY PRIMARY 4 php.Table2.ID 1 [sql]EXPLAIN SELECT * FROM `Table1` INNER JOIN `Table2` USING(`ID`) EXPLAIN SELECT * FROM `Table1` INNER JOIN `Table2` ON `Table2`.`ID` = `Table1`.`ID`[/sql] Код (Text): id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Table2 ALL PRIMARY NULL NULL NULL 3 1 SIMPLE Table1 eq_ref PRIMARY PRIMARY 4 php.Table2.ID 1 Найди три отличия
ctekjlo, не развалится. Это разные синтаксисы одной операции. Вот только когда ты пишешь JOIN — сразу видно, где условия соединения таблиц, а где условия выборки.
Взгляни если есть время Палево Вот мой запрос для подсчета сделанный с твоей помощью [sql]SELECT sklad.naimenovanie, //название материалов sklad.edizm, //единица измерения SUM(nakl.kolvo), //сколько израсходованно sklad.now, //сколько на складе sklad.price, //сумма израсходованного -SUM(nakl.price * nakl.kolvo) //сумма товаров на складе FROM sklad LEFT OUTER JOIN nakl ON ( nakl.idmat = sklad.id AND tip='rashod' ) GROUP BY sklad.id ORDER BY sklad.naimenovanie id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE sklad ALL NULL NULL NULL NULL 362 Using temporary; Using filesort 1 SIMPLE nakl ref idmat idmat 4 jobs.sklad.id 167 [/sql]
PHP: sklad AUTO_INCREMENT=633 ; nakl AUTO_INCREMENT=16060 id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE sklad ALL NULL NULL NULL NULL [b]362[/b] Using temporary; Using filesort 1 SIMPLE nakl ref idmat idmat [b]4[/b] jobs.sklad.id 167 Все путем?
Ты скажи лучше — часто ли будет этот запрос вызываться? И часто ли будет делатся UPDATE/INSERT в базе?
При добавлении товаров удалении и так для просмотра Эти таблицы с апреля в принцепе расти будет только nakl так как товары почти свегда одни и теже
Раньше было вообще ужасно. Стало намного лучше Если SELECT делается намного чаще, чем INSERT/UPDATE, то имеет смысл денормализовать базу, то есть хранить SUM(nakl.kolvo) и -SUM(nakl.price * nakl.kolvo) в отдельных полях таблицы со списком складов, а обновлять эти значения только если они изменятся. Тогда не будет каждый происходить никому не нужный пересчёт, при котором считаются уже посчитанные числа. Так, например, устроен форум phpbb. В нем количество сообщений в категории хранится в отдельном поле, а не пересчитывается каждый раз при выборке.
Под имя это нормально `naimenovanie` varchar(255) NOT NULL default '', если делать ORDER BY sklad.naimenovanie или char лучше?
Самый щик он событие подсветки строк повесил не на TR а на TD и в цикле с document.getElementById менял цвет. В таблице в 600 строк были жуткии лаги с подсветкой.