SQL最佳化--邏輯最佳化--資料庫的約束規則與語義最佳化,sql語義

來源:互聯網
上載者:User

SQL最佳化--邏輯最佳化--資料庫的約束規則與語義最佳化,sql語義

1)資料庫完整性

①實體完整性(Entity Integrity):自己

a)一個關係對應現實世界中一個實體集。--ER模型

b)現實世界中的實體具有某種惟一性標識。--主鍵

c)主關鍵字是多個屬性的組合,則所有主屬性均不得取空值。--隱含的索引

②值域完整性(Domain Integrity): 自己的局部

保證資料庫欄位取值的合理性。屬性值應是域中的值,這是關係模式規定了的。

包括:

a)檢查(CHECK)

b)預設值(DEFAULT)

c)不為空白(NOT NULL)

d)可為空白(NULL)等

③參照完整性(Referential Integrity): 自己與其他"實體”的關係

參照完整性是定義建立關係之間聯絡的主關鍵字與外部關鍵字引用的約束條件。

a)關聯式資料庫中通常都包含多個存在相互聯絡的關係,關係與關係之間的聯絡是通過公用屬性來實現的。

b)所謂公用屬性,它是一個關係R(稱為被參照關係或目標關係)的主關鍵字,同時又是另一關係K(稱為參照關係)的外部關鍵字。如果參照關係K中外部關鍵字的取值,要麼與被參照關係R中某元組主關鍵字的值相同,要麼取空值,那麼,在這兩個關係間建立關聯的主關鍵字和外部關鍵字引用,符合參照完整性規則要求。如果參照關係K的外部關鍵字也是其主關鍵字,根據實體完整性要求,主關鍵字不得取空值,因此,參照關係K外部關鍵字的取值實際上只能取相應被參照關係R中已經存在的主關鍵字值。

④使用者自訂完整性(User-definedIntegrity):使用者增加的限制

使用者定義完整性則是根據應用環境的要求和實際的需要,對某一具體應用所涉及的資料提出約束性條件。這一約束機制一般不應由應用程式提供,而應有由關聯式模式提供定義並檢驗。使用者定義完整性主要包括欄位有效性約束和記錄有效性。

2)語義最佳化

①基本概念

因為語義的原因,使得SQL可以被最佳化。包括兩個基本概念:

a)語義轉換。因為完整性限制等的原因使得一個轉換成立的情況稱為語義轉換。

b)語義最佳化。因為語義轉換形成的最佳化稱為語義最佳化。

語義轉換其實是根據完整性條件約束等資訊對“某特定語義”進行推理,進而得到的一種查詢效率不同但結果相同的查詢。

語義最佳化是從語義的角度對SQL進行最佳化,不是一種形式上的最佳化,所以其最佳化的範圍,可能覆蓋其他類型的最佳化範圍。

②串連消除(Join Elimination)(MySQL不支援)

對一些串連操作先不必評估代價,根據已知資訊(主要依據完整性條件約束等,但不全是依據完整性條件約束)能推知結果或得到一個簡化的操作。

例如:

利用A、B兩個基表做自然串連,建立一個視圖V,如果在視圖V上執行查詢只涉及其中一個基表的資訊,則對視圖的查詢完全可以轉化為對某個基表的查詢。

串連引入(Join Introduction)

增加串連有助於原始關係變小或原關係的選擇率降低。

④謂詞引入(Predicate Introduction)(MySQL不支援)

根據完整性條件約束等資訊,引入新謂詞,如引入基於索引的列,可能使得查詢更快;

例如:

一個表上,有“c1<c2”的列約束,c2列上存在一個索引,查詢語句中的WHERE條件有“c1>200”,則可以推知“c2>200”,WHER條件變更為“c1>200 AND c2>200 AND c1<c2”,由此可以利用c2列上的索引,對查詢語句進行最佳化;如果c2列上的索引的選擇率很低,則最佳化效果會更高。

④檢測空回答集(Detecting the Empty Answer Set)(MySQL支援)

查詢語句中的謂詞與約束相悖,可以推知條件結果為FALSE,也許最終的結果集能為空白;

例如:

CHECK約束限定“score”列的範圍是60到100,而一個查詢條件是“score<60”,則能立刻推知條件不成立。

⑤排序最佳化(Order Optimizer)(MySQL部分支援)

ORDERBY操作通常由索引或排序(sort)完成;如果能夠利用索引,則排序操作可省略;另外,結合分組等操作,考慮ORDERBY操作的最佳化。

⑥唯一性使用(Exploiting Uniqueness)(MySQL支援)

利用唯一性、索引等特點,檢查是否存在不必要的DISTINCT操作

例如:

在主鍵上執行DISTINCT操作,若有則可以把DISTINCT消除掉。


摘自《資料庫查詢最佳化工具的藝術》一書

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.