我正在使用索引、索引集群、哈希集群等结构学习查询优化。我有一位客人,正在订餐。我需要优化两个查询
查询1:
SELECT BOOKING.BID, CUSTOMER.CID, BOOKING.SEAT_PRICE
FROM BOOKING, CUSTOMER
WHERE BOOKING.CID= CUSTOMER.CID
AND BOOKING.SEAT_PRICE>200;
查询2:
SELECT BOOKING.BID, CUSTOMER.CID
FROM BOOKING, CUSTOMER
WHERE BOOKING.CID= CUSTOMER.CID
AND CUSTOMER.CID>1900;
从理论上讲,为了提高性能,我们需要索引/索引集群/散列集群中的所有谓词,包括where、join、order by…条款。但是,当我尝试对上述查询遵循该规则时,它没有任何性能改进。
例如,对于第一个查询,我在预订和客户表的CID列上创建索引。我也在预订表的列座位价格上创建索引。我运行的脚本如下:
CREATE INDEX BOOKING_SEAT_PRICE ON BOOKING(SEAT_PRICE);
CREATE INDEX BOOKING_CID ON BOOKING(CID);
CREATE INDEX CUSTOMER_CID ON CUSTOMER(CID);
请注意,我创建跟踪文件是为了查看查询的统计信息。在创建这些索引之前,我运行查询来创建跟踪文件。做了这些索引之后,我再次运行它来创建另一个跟踪文件。但是,新的跟踪文件在时间、CPU、运行时间、查询等方面没有任何改进,甚至性能最差。
有人能帮我吗?这真的让我很沮丧,因为我不明白为什么,我严格遵守规则。我做了谷歌,但没有用。