1

この問題の単純な例を作成しました。次のクエリは、order by 句に存在しないすべての列に対して null を返します。10g に対してクエリを実行すると問題ありません。これは、トップ n クエリの基本的な実装です。

内部の select ステートメントが非効率的であることはわかっていますが、SQL は生成されます (必要に応じてエンジンを変更できます)。

すべてのヘルプは大歓迎です!

select  * from (
    select b.* from USER_table b 
    where b.id in (
      select c.id from USER_table c where c.removed = 0
    ) 
     order by surname
) a where rownum <= 10



--------------------------------------------------------
--  DDL for Table USER_TABLE
--------------------------------------------------------

  CREATE TABLE "CHRONICLE"."USER_TABLE" 
   (    "FIRST_NAME" VARCHAR2(20 BYTE), 
    "SURNAME" VARCHAR2(20 BYTE), 
    "USERNAME" VARCHAR2(20 BYTE), 
    "REMOVED" NUMBER, 
    "ID" NUMBER
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE     DEFAULT     CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  DDL for Index USER_TABLE_PK
--------------------------------------------------------

  CREATE UNIQUE INDEX "CHRONICLE"."USER_TABLE_PK" ON "CHRONICLE"."USER_TABLE" ("ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT     CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table USER_TABLE
--------------------------------------------------------

  ALTER TABLE "CHRONICLE"."USER_TABLE" MODIFY ("ID" NOT NULL ENABLE);

  ALTER TABLE "CHRONICLE"."USER_TABLE" ADD CONSTRAINT "USER_TABLE_PK" PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT  CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE;

オラクルのバージョンは 10.2.0.1 です。

Windows 2008 R2 x64 で動作しています

11gの計画の説明

11gの計画の説明

10gの計画を説明する

10gの計画の説明

4

1 に答える 1

2

ORACLE 11G 11.2.0.1 PATCH 13 BUG FOR WINDOWS (64-BIT AMD64 AND INTEL EM64 (パッチ)) を適用したところ、問題が解決しました。また、特定の理由を見つけるためにバグ データベースを調べようとしましたが、これは言うは易く行うは難しです。

ご提案いただきありがとうございます

于 2011-10-27T12:09:33.000 に答える