Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 影响索引的Oracle主键_Database_Performance_Oracle_Indexing - Fatal编程技术网

Database 影响索引的Oracle主键

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

昨晚我有一个索引运行得很好,低I/O,所有这些都是好东西。今天早上,我在表中添加了一个主键,性能下降,优化器忽略了索引,即使有提示。。有什么建议吗?谢谢

架构结构

      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是否已编制索引?)