所以我现在已经坚持了 6 个小时,我不知道该怎么做。我正在做大学作业,要求我们创建一个未优化的 sql 查询(不一定有意义),然后应用索引并查看它是否使其更快(它为我做了,从 0.70 经过时间到 0.66)然后我们不得不申请集群。
我应用了集群,现在完成查询所需的数量几乎翻了一番。从 0.70 到 1.15。以下是我指定集群的方式:
CREATE CLUSTER customer2_custid25 (custid NUMBER(8))
SIZE 270
TABLESPACE student_ts;
我以前用 INITIAL 和 NEXT 尝试过所有的时间,但这似乎没有什么不同。 以下是表格:
CREATE TABLE CUSTOMER18 (
CustID NUMBER(8) NOT NULL,
FIRST_NAME VARCHAR2(15),
SURNAME VARCHAR2(15),
ADDRESS VARCHAR2(20),
PHONE_NUMBER NUMBER(12))
CLUSTER customer2_custid25(CustID);
CREATE TABLE product18(
ProdID NUMBER(10) NOT NULL,
PName Varchar2(6),
PDesc Varchar2(15),
Price Number(8),
QOH Number(5));
CREATE TABLE sales18(
SaleID NUMBER(10) NOT NULL,
SaleDate DATE,
Qty Number(5),
SellPrice Number(10),
CustID NUMBER(8),
ProdID NUMBER(10))
CLUSTER customer2_custid25(CustID);
CREATE INDEX customer2_custid_clusterindxqg ON CLUSTER customer2_custid25 TABLESPACE student_ts ;
基本查询:
SELECT
AVG(s.sellprice), s.qty, c.custid
FROM
SALES s, CUSTOMER2 c
WHERE
c.custid = s.custid
GROUP BY
s.qty, s.qty, c.custid
HAVING
AVG(sellprice) > (SELECT MIN(AVG(price))
FROM product
WHERE pname in
(SELECT pname
FROM product
GROUP BY pname
HAVING pname LIKE 'FA%')
GROUP BY price);
我还尝试将集群索引中的表空间部分移走。
我按照这个公式来帮助计算集群大小:
“集群的大小是父行的大小+(子行的大小 * 子级的平均数)。”
这使我达到了 270 的大小。然而,在测试从 250 到 350 的大小(上升 20)之后,我发现 320 是最快的,为 1.15。
无论我尝试什么,为了我的爱,我都不能让它低于我的基本查询次数。
其他学生也这样做了,他们的查询时间减半。
非常感谢所有帮助。
聊天回顾
根据该计划,CBO 决定不利用
CLUSTER
.