【正文】
WHERE amount 0。A39。X39。 表的行計數(shù)SELECT COUNT(有索引的列) FROM TRANS。SYDNEY39。A39。MANAGER39。 FROM dept WHERE dept_no = AND dept_cat = 39。A39。MELBOURNE39。12339。統(tǒng)計 0 recursive calls 12 db block gets 4 consistent gets 0 physical reads 0 redo size 4779 bytes sent via SQL*Net to client 314 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed SQL TKPROF 初始化afe57gc2/oracle/product/ 40 sqlplus /SQL ALTER SESSION SET TIMED_STATISTICS = true。%dump_dest39。執(zhí)行計劃 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 39。 SELECT ... FROM emp WHERE TO_NUMBER(emp_type) = 123。)。 FROM emp E WHERE = )。OR EXISTS ( SELECT 39。MANAGER39。MANAGER39。PERTH39?!?SELECT , , , , FROM pany C, emp E WHERE = 。SMITH%39。AMEX39。CAPITAL%39。 SELECT ROWID, ... INTO :emp_rowid, ... FROM emp WHERE = 56722 FOR UPDATE。MANAGER39。4 高效的sql語句 Sql優(yōu)化方法RBO(rulebased optimizer)CBO 驅動表1)2張行數(shù)不一致的表連接 表TAB1行數(shù):16,384行 表TAB2行數(shù):1行SELECT COUNT(*) FROM TAB2, TAB1。 長語句避免使用很長、很復雜的查詢語句,如果有特殊需求必須書寫較長的SQL語句,應該把語句分解成若干部分,每一部分形成一個存儲過程或函數(shù)。如果子查詢不可避免,那么要在子查詢中過濾掉盡可能多的行。在執(zhí)行查詢時會利用索引以提高響應速度。如:SELECT A FROM ABC WHERE A LIKE 39。項目一部數(shù)據(jù)庫開發(fā)規(guī)范版本號日期修改者說 明20120306注:對該文件內(nèi)容增加、刪除或修改均需填寫此變更記錄,詳細記載變更信息,以保證其可追溯性。3. 語句書寫規(guī)范. 盡量不使用某種數(shù)據(jù)庫的特有功能為了保持可移植性,盡量不使用某種數(shù)據(jù)庫的特有功能,如SQL Server專用的Unique ID, Oracle專用的Sequence的功能;. 查詢sql語句盡量使用綁定變量. 盡最大可能不使用通配符在SQL語句中,LIKE關鍵字支持通配符匹配,但這種匹配特別耗費時間。N39。應當盡量避免子查詢。 UNION如果不過濾多表中的重復數(shù)據(jù),請使用UNION ALL;如果過濾多表中的重復數(shù)據(jù),請使用UNION。2) 不使用容易與系統(tǒng)關鍵字重復的單詞來命名,如ID,DATE等,但可以使用如NODEID,BUYDATE等可以來命名;3) SQL語句用大寫字母(字段中的內(nèi)容除外); 4) 編寫ddl和dml時,每個語句后面必須加上分號;5) 對于定期增加性的性能數(shù)據(jù)表,必須建立有效的索引;6) 查詢語句的Where語句必須落在索引上?!餝ELECT * FROM emp E WHERE 25 (SELECT COUNT(*) FROM EMP WHERE emp_mgr = ) AND emp