1. 程式人生 > >Mysql索引概念和儲存過程

Mysql索引概念和儲存過程

索引

索引演算法

1.二叉樹索引,時間複雜度O(lgN)。 2.雜湊表,時間複雜度O(1)。

索引原則:

1.不過度索引 2.索引條件列(where後面最頻繁的條件比較適宜索引) 3.索引雜湊值,過於集中的值不要索引。例如:給“男”“女”索引,意義不大。


索引缺點:

降低了增刪改的速度(update/delete/insert) 增大了表的檔案大小(索引檔案甚至可能比資料檔案還要大)

索引分類:

普通索引(index):僅僅是加快查詢速度 唯一索引(unique index):行上的值不能重複 主鍵索引(primary key):主鍵不能重複,主鍵索引必唯一,但是唯一索引不一定是主鍵 全文索引(fulltext index)
:檢索速度快,多伺服器負荷降低 關於全文索引的用法:它是針對文章中每一個詞進行索引  match (全文索引名) against ('keyword'); 關於全文索引的停止詞:全文索引不針對非常頻繁的詞做索引, 如this,is,you,my等等 全文索引對中文的意義不大,因為中文一句話不能區分詞。

檢視索引

show index from  表名; show index from member \G 
注意沒有分號,有分號會報錯。\G代表橫著顯示


建立索引

alter table 表名 add index /unique/fulltext等  (索引名); 索引名可以不加 alter table 表名 add primary key(列名);         //不要加索引名,因為主鍵只有一個

刪除索引

alter table 表名 drop index 索引名;    //刪除普通索引 alter table 表名 drop primary key;     //刪除主鍵索引

儲存過程

儲存過程 概念類似於函式,就是把一段程式碼封裝起來 當要執行這一段程式碼的時候,可以通過呼叫該儲存過程來實現。 在封裝的語句體裡面可以用if/else,case,while等控制結構 由於mysql 列本來就可以當變數看,所以有控制結構有列就可以當作程式設計了... 檢視現有儲存過程:show procedure status; 建立儲存過程:見下面 刪除儲存過程:drop procedure 儲存過程名 呼叫儲存過程
:call 儲存過程名();           //是小括號,可以放參數 如果要呼叫上面建立的儲存過程,用call p1()$    即可,$是因為修改了delemiter。 舉例: 1.不帶引數 create procedure p1() begin select * from g end$ 呼叫方式:call p1()$
2.帶引數       create procedure p2(n int) begin select * from g where num > n end$        呼叫方法:call p2(10)$ 3.加上控制結構if create procedure p2(n int, j char(1)) begin if j == 'h' then select * from g where num > n; else select * from g where num < n; endif                //注意sql裡面if/else後面有endif end$ 4.計算1->n的和,while
所以,儲存過程實際上可以理解為函式,只是沒有返回值!