排好序的快速查詢資料結構
1、單值索引:即乙個索引包含單個列;2、唯一索引:索引列的值必須唯一,但允許有空值;
3、復合索引:即乙個索引包含多個列;
建立語法:
create [unique] index indexname on tablename(columnname(length));
alter tablenameadd [unique] index [indexname] on (columnname(length));
刪除:
drop index [indexname] on tablename;
檢視:
show index from table;
1、主鍵自動建立唯一索引;4.1、檢視sql執行計畫;2、頻繁作為查詢條件的字段;
3、頻繁更新的字段不適合建立索引,因為更新不單單更新了記錄還會更新索引,加重io負擔;
4、單鍵/組合索引的選擇,高併發傾向組合索引;
5、查詢統計或分組字段;
6、表記錄少不要建立索引;
7、經常增刪改的表不要建立索引,提高了查詢速度,同時會降低更新表的速度,對錶進行insert,update和delete,mysql不僅要儲存資料還要儲存索引檔案;
8、資料重複且分布均勻的表字段建立索引意義不大;
explain + sql語句;4.2、執行計畫包含的資訊;
id相同:執行順序從上之下;id不同:id值越大優先順序越高,越先被執行;
******:簡單select查詢;premary:如果包含複雜查詢部分,最外層 查詢被標記;
subquery:在select或where中包含了子查詢;
derived:子查詢被標記為臨時表;
union:若第二個select出現在union之後,則被標記為union;若union包含在from子句的子查詢中,外層select將被標記為union;
union result:從union表獲取結果的select
system:表中只有一條資料;const:通過索引一次即找到,用於比較primary和unique索引;
eq_ref:唯一索引掃瞄,對於每個索引鍵,表中只有一條資料匹配;
ref:非唯一索引建,返回匹配某個單獨值的所有行;
rang:只檢索給定範圍的行,使用乙個索引來選擇行;
index:全表掃瞄,只不過是從索引中讀取的,比all快;
all:全表掃瞄,從硬碟讀取;
system>const>eq_ref>ref>rang>index>all
using filesor:mysql使用外部索引,而沒有用到自建的索引using temporary:mysql使用了臨時表儲存中間資料,常見於group by,order by
using index:表示在select中使用了覆蓋索引,表示資料全部從索引中查詢到了,效率不錯,如果同時出現using where,表示索引被用來執行索引鍵值的查詢,如果沒有同時出現,表示索引用來讀取資料而非執行查詢動作
using where:表明使用了where過濾;
using join buffer:使用了連線快取;
impossible where:where語句沒有效果;
select tables optimized away:select操作已經優化到不能再優化了(mysql根本沒有遍歷表或索引就返回資料了)
distinct:優化distinct,在找到第一行匹配的資料之後停止查詢相同值的動作;
解決%開頭,使用復合索引,索引包含查詢條件列即可
冥想第十九天
不能怪自己多心,畢竟出現不舒服的感覺是因為大腦太關切自己的身體了。一點也不想讓它受刺激。今天出來玩了,早上做了體檢。又帶著小妞妞出來打了預防針,後又跟著朋友出來滎陽南嶺玩了,到時有點困,告訴自己要接受,好好接受當下 但不反抗,知道是正常的。坐上車後睡了一會,所有的精力都回來了。當和朋友一起回來的時候...
ACM 第十九天
積性函式o n 線性篩,篩素數,u n 尤拉函式 n n 1 vis 0 vis 1 1,mu 1 1,phi 1 1 2 for rg int i 2 i n i 7else mu k mu i phi k phi i phi prime j 8 9 可以發現,線性篩分為3部分 1.n本身是素數,...
PYTHON小白 第十九天
python小白 第十九天 1 異常概述 異常機制己經成為衡量一門程式語言是否成熟的標準之一,使用異常處理機制的python程式有更好的容錯性,更加健壯。2 異常處理機制 python的異常處理機制可以讓程式具有極好的容錯性,讓程式更加健壯。當程式執行出現意外情況時,系統會自動生成error物件來通...