我使用了mysql_query()
和mysql_connect()
的查询,现在我在php中使用PDO
请帮助我,这个查询的最佳和最快方法是什么:
我的旧查询是:
$sql = "SELECT * FROM products WHERE publish = '1'
AND id IN
(SELECT product_id FROM category_controller WHERE category_id IN
(SELECT id FROM categories WHERE publish = '1'))";
$result = mysql_query($sql);
我的新查询是:
$PDO = new PDO("mysql:host=localhost;dbname=mydb", 'root', '');
$sql = "SELECT * FROM products WHERE publish = '1'
AND id IN
(SELECT product_id FROM category_controller WHERE category_id IN
(SELECT id FROM categories WHERE publish = '1'))";
$result = $PDO->query($sql);
但我使用的两种方式都非常缓慢,因为products
表中有超过5000条记录。
请帮助我找到一种新的,最快的方式来运行此查询。
答案 0 :(得分:0)
PDO并没有提高你的速度,正如我在这个硬查询中看到的那样。 如果需要提高速度,则需要按部件分解查询。 例如: 第一个查询将获取您的类别中的所有ID,并生成ID数组。 2查询将从cateogry_controller获取所有product_id使用先前查询{id}中的id数组
然后为产品做同样的事情
答案 1 :(得分:0)
您可以使用JOIN概念而不是像这样的所有子查询来加快速度。
SELECT p.*
FROM products p
JOIN category_controller cc ON cc.category_id = c.id
JOIN categories c ON c.publish = 1
WHERE p.publish = 1