下列所有情況用到的表為:
效能消耗大,需要額外的一次排序(查詢)。常見於order by語句中。
下列sql就會出現上述字段:原因是建立的符合索引a1_a2_a3,此時沒有遵循最左原則,跨列使用了索引。
explain
select a1 from test02 where a1 =
''order
by a3;
下列sql不會出現filesort的情況,原因是沒有跨列使用索引
**小結:**對於單索引,如果排序和查詢的字段是同乙個字段,則不會出現using filesort;如果排序和查詢用的不是同乙個字段,則會出現using filesort;對於符合索引的情況,如果沒有遵循最左原則或者跨列使用索引,就會出現using filesort。效能損耗大,用到了臨時表。一般出現在group by語句當中。
對於組合索引(建立了a1、a2、a3的組合索引),下列sql會出現using tempory欄位:
explain
select a1 from test02 where a1 =
''group
by a3;
原因是沒有遵循最左原則,跨列使用了索引。
對於符合索引,下列sql沒有使用到using temporary:
**小結:**對於單索引,一般解決的辦法就是:查詢哪些列,就根據那些使用group >by;對於復合索引,group by的字段要和前面的匹配最左原則或者不能跨》列。效能提公升了;索引覆蓋,原因:不讀取原始檔,只從索引檔案裡面讀取資料(不需要回表查詢),只要用到的列全在索引中,就是索引覆蓋using index。
下面sql語句建立了a1的索引,符合using index 的要求
下列語句只有a1是索引,會用到回表查詢
where的子句永遠是false
例如:
explain
資料庫中字段的約束
1.主鍵約束 primary key 1 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。2 是不可能 或很難 更新 3 主鍵列上沒有任何兩行具有相同值 即重複值 不允許空 null 4 主健可作外健,唯一索引不可 2.唯一性約束 unique 1 唯一性約束用來限制不受主鍵約束的列上...
資料庫中的冗餘字段
在建庫的時候,尤其是複雜的資料庫,難免會出現大量的冗餘字段,出現資料冗餘 資料冗餘 在乙個資料集合中重複的資料稱為資料冗餘.資料冗餘的目的 資料的應用中為了某種目的採取資料冗餘方式。1 重複儲存或傳輸資料以防止資料的丟失。2 對資料進行冗餘性的編碼來防止資料的丟失 錯誤,並提供對錯誤資料進行反變換得...
匯出SQL Server資料庫表中字段的說明 備註
use 庫名 select 表名 case when a.colorder 1then d.name else end 表說明 case when a.colorder 1then isnull f.value,else end 字段序號 a.colorder,欄位名 a.name,字段說明 isn...