Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: эффективность и скорость выполнения запроса
IF(g.cat_id =0,'не определена',(SELECT title FROM category WHERE id = g.cat_id))AS cat_title,
g.part,
g.title,
g.count,
g.price,
g.count * g.price AS sum,
g.archive
FROM goods AS g
WHERE g.archive IN($goods)ORDERBY archive, part
Заранее благодарен
----- Ударим крепким сном по мукам совести!
ugin_root
Отправлено: 28 Февраля, 2012 - 18:52:42
Частый гость
Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011 Откуда: Киргизия
Помог: 5 раз(а)
lamozavrik
запрос правильный. если нет другого выбора чем IF и внутри запрос то делай его. Была подобная ситуация когда нужно было делать запрос к таблице примерно для 500 записей из 10000, left outer join выполнялся очень долго (т.к было 10000 записей), а такой вариант выполнялся намного быстрее. Если ситуация похожа то делай подзапрос внутри IF. Но попробуй сделать то-же самое с left outher join, выбирай то что быстрее работает
Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011
Помог: 4 раз(а)
Я пробовал с INNER JOIN, но дело в том, что в INNER JOIN нужно указать условие ON к примеру id категории = id категории в таблице товаров. А ситуация такая, что при удалении категории все товары, что находятся в ней переносятся в архив, а поле id категории в товарах, которые были в удаляемой категории меняется на 0. Так вот в случае с INNER JOIN поля, в которых id категории = 0 не выбираются. Вот решил проблему так, но не знаю на сколько правильно )
----- Ударим крепким сном по мукам совести!
EuGen
Отправлено: 29 Февраля, 2012 - 08:08:40
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
lamozavrik
Отправлено: 29 Февраля, 2012 - 09:00:47
Частый гость
Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011
Помог: 4 раз(а)
EuGen, спасибо за подсказку =))
Может еще кто подскажет, почему при условии WHERE col = 1 и ндекс используется, а при WHERE col IN (1, 2) не используется? Можно это как то исправить?
----- Ударим крепким сном по мукам совести!
EuGen
Отправлено: 29 Февраля, 2012 - 10:00:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.