使用 SQL 甲骨文。我创建了一个查询来查找食品订单的总数。
EXPLAIN PLAN FOR
SELECT FOOD.F_NAME, COUNT(ORDERS.O_ORDERID)
FROM ORDERS
INNER JOIN CUSTOMER ON O_CUSTID = C_CUSTID
INNER JOIN FOOD ON C_FOODKEY = F_FOODKEY
GROUP BY FOOD.F_NAME;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
3250
这将返回计划表输出中行 ID 0 处的成本 (%CPU) 。
我了解到非规范化将加快查询速度并降低成本。在这种情况下,我从表中复制了食物名称FOOD
以ORDERS
避免INNER JOIN
. 我应该获得更好的成本 (%CPU) 使用率。
我接下来使用了这个查询
EXPLAIN PLAN FOR
SELECT ORDERS.F_NAME, COUNT(ORDERS.O_ORDERID)
FROM ORDERS
GROUP BY ORDERS.F_NAME;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
成本 (%CPU) 根本没有太大变化 - 该值3120
位于计划表输出中的行 ID 0 处。
非规范化和删除INNER JOIN
假设不是为了提高我的成本吗?在我的情况下,改进是如此微不足道。这里有什么问题?