提高SQL效能方法

2021-09-21 18:18:08 字數 1038 閱讀 6226

首先,索引是有序的,通過索引,可以避免排序;其次,排序操作是昂貴的,資源開銷較大,特別事需要排序的結果集較大時,更是如此。排序往往是成為一條sql中最消耗資源的處理步驟。所以,如果可以通過索引來避免排序,則可能降低資源的開銷,提高sql的執行效率。

由於該問題是在生產環境,無法截圖,只能口述啦,實際也是一樣

select * from (select c1,c2 from t1 order by c1 desc)where rownum < 3;

可在檢視資料庫中檢視執行計畫

該sql是在c1上進行倒序排序,然後返回前兩行。雖然最終結果只需要兩行,但這兩行卻是在全部行排序的前提下獲得的;記,其實際上是對全部記錄的排序。如果我們在排序列c1上建立索引,則可能避免排序,從而降低資源消耗。

在c1上建立索引

create index t1_index on t1(c1);

再執行2中的sql,並檢視執行計畫

該問題主要出現在模糊查詢like當中。

正常情況下like表示式中的萬用字元「-」和百分號「%」出現在條件的最後,我們可以通過前面的字元進行定位和過濾。但是若%出現在最前面,我們只能改寫將列中的值進行反轉(reverse),使出現在前面的%轉換到後面,同時在相關列上建立反轉函式索引來使用上索引。

**注意:**當兩頭都有%,該方法將失效,所以,除非必要,盡量在表示式前面使用%

該錶具有乙個索引(c1可進行模糊查詢,eg:userna me):

create index t2_index on t2(c1);

查詢語句:

select * from t2 where c1 like 『%zhang%』;

3、優化方法

保證結果集一樣的情況修改查詢sql:

select * from t2 where c1 like 『zhang%』;

可檢視執行計畫

1、知識點

sql的解析方式:from語句從右到左(針對多表連線查詢時,資料量要從左往右依次減少)

where語句從下到上(針對多表連線查詢時,連線在前,條件在後

提高 SQL 效能的方法

某些時候,查詢需要將資料與其他一些可能只能通過執行 group by 然後執行標準查詢才能收集的資料進行聯接。例如,如果要查詢最新五個定單的有關資訊,您首先需要知道是哪些定單。這可以使用返回定單 id 的 sql 查詢來檢索。此資料就會儲存在臨時表 這是乙個常用技術 中,然後與 products 表...

提高SQL效能的方法

一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...

提高SQL效能方法 摘自CSDN

一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...