Database 影响索引的Oracle主键
昨晚我有一个索引运行得很好,低I/O,所有这些都是好东西。今天早上,我在表中添加了一个主键,性能下降,优化器忽略了索引,即使有提示。。有什么建议吗?谢谢 架构结构Database 影响索引的Oracle主键,database,performance,oracle,indexing,Database,Performance,Oracle,Indexing,昨晚我有一个索引运行得很好,低I/O,所有这些都是好东西。今天早上,我在表中添加了一个主键,性能下降,优化器忽略了索引,即使有提示。。有什么建议吗?谢谢 架构结构 Product ID PK Name Price Order_Line Order_ID FK Product_ID FK Qty Orders ID
Product
ID PK
Name
Price
Order_Line
Order_ID FK
Product_ID FK
Qty
Orders
ID PK
O_Date date
CustID
查询
SELECT SUM(OL.QTY) FROM PRODUCT P,ORDERS O, ORDER_LINE OL
WHERE
P.NAME = 'APRICOT JAM'
AND
P.ID = OL.PRODUCT_ID
AND
O.O_DATE = '03-MAR-2014'
AND
OL.ORDER_ID= O.ID
;
它没有使用的索引是产品上的复合索引,它是(名称,ID),而不是使用产品主键进行索引范围扫描,谢谢 产品表
ID PK
名称索引01
价格
我会这样安排你的桌子。
您的查询将进行范围扫描,因为它将在表中扫描查询中的P.NAME='APRICOT JAM'子句。请发布表的结构、索引和主键。还有针对表运行的查询。Hi ok将立即执行该操作!谢谢!:)Product表只显示ID上的PK-实际上看起来还可以。我不明白为什么ID/Name上会有一个复合键。索引中的GET总数约为2000个,但当我包含主键时,GET总数增加到195000个。这与统计有关吗?谢谢请张贴执行前后的计划。看起来可能改变了加入顺序。您没有说过被忽略的索引是什么-关于
product.name
?我猜它是使用产品
作为驱动表,现在它切换到使用订单
?(另外,您的FKs是否已编制索引?)