0

私よりも速い解決策はありますか?

列 orders_id と products_id を含むテーブルがあります(変更できません)

ここで、一意の products_id で行われた注文の数を知りたいと思っています。

以下を試しました。しかし、あまりにも多くの行 (160'000) をロードしているときにクラッシュします。

    SELECT  DISTINCT `products_id` ,  `products_name` , COUNT(*) as totalorders FROM  `orders_products` ORDER BY  `products_id` ASC 

サブクエリでも試しましたが、上記と同じ問題です。

    SELECT (SELECT count(*) FROM orders_products WHERE products_id = op.products_id) AS totalorders, products_id, products_name FROM orders_products op ORDER BY products_id ASC
4

2 に答える 2

0

products_id にインデックスがあることを願っています

その場合、次のようなことを試してみます。

select products_id, Min(Products_Name), count(*) as TotalOrders from Orders_Products Group by Products_ID Order by Products_ID asc

products_name をグループ化に含めるなど、他にもいくつかの方法で products_name を取得できます (その他の意味合いもあります)。

于 2013-10-30T15:55:34.540 に答える
0

どうですか:

SELECT `products_id`, `products_name`, COUNT(*) FROM `orders_products` GROUP BY (`products_id`, `products_name`) ORDER BY `products_id`
于 2013-10-30T15:52:45.117 に答える