OA知識(shí)
靜態(tài)SQL技術(shù)-SQL優(yōu)化主要包括以下內(nèi)容
發(fā)布于:2020-03-18 17:43:51
靜態(tài)SQL技術(shù)-SQL優(yōu)化主要包括以下內(nèi)容
靜態(tài) SQL 語(yǔ)句是一種可以在開(kāi)發(fā)時(shí)在應(yīng)用程序中進(jìn)行硬編碼的 SQL 語(yǔ)句,因?yàn)殛P(guān)于其結(jié)構(gòu)以及它打算要與之交互的對(duì)象(例如表、列和數(shù)據(jù)類型)的信息事先就知道。
由于在開(kāi)發(fā)時(shí)就知道靜態(tài) SQL 語(yǔ)句的細(xì)節(jié),所以分析語(yǔ)句以及選擇使用最優(yōu)的數(shù)據(jù)訪問(wèn)方案以執(zhí)行該語(yǔ)句等工作將由數(shù)據(jù)庫(kù)優(yōu)化器在開(kāi)發(fā)過(guò)程中執(zhí)行。由于其操作形式已存儲(chǔ)在數(shù)據(jù)庫(kù)(作為一個(gè)包)中,并且無(wú)需在應(yīng)用程序運(yùn)行時(shí)來(lái)生成,所以靜態(tài) SQL 語(yǔ)句可快速執(zhí)行。
SQL優(yōu)化
SQL優(yōu)化主要包括以下內(nèi)容:
? 選擇最有效率的表名順序
? 選擇最有效率的表名順序
? SELECT子句中避免使用 * ,
? 減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù)
? 整合簡(jiǎn)單,無(wú)關(guān)聯(lián)的數(shù)據(jù)庫(kù)訪問(wèn)
? 重復(fù)記錄
? 用TRUATE替代DELETE
? 盡量多使用COMMIT
? 用Where子句替換HAVING子句
? 減少對(duì)表的查詢
? 通過(guò)內(nèi)部函數(shù)提高SQL效率
? 使用表的別名(Alias)
? 用EXISTS替代IN、用NOT EXISTS替代NOT IN
? 識(shí)別,低效執(zhí)行,的SQL語(yǔ)句
? 用索引提高效率
? 用EXISTS替換DISTIT
? 避免在索引列上使用NOT 通常
? 避免在索引列上使用計(jì)算.WHERE子句中,如果索引列是函數(shù)的一部分.優(yōu)化器將不使用索引而使用全表掃描
? 用>=替代>
? 用UNION替換OR (適用于索引列)
? 用IN來(lái)替換OR
? 用WHERE替代ORDER BY
? 避免改變索引列的類型.
? 慎用游標(biāo)