Mysql索引概念和儲存過程

2021-07-24 19:49:17 字數 1898 閱讀 5308

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

所以,儲存過程實際上可以理解為函式,只是沒有返回值!

mysql的索引和儲存過程

2 儲存過程 好處,加快了查詢速度 壞處,降低了增刪改的速度,增大了表的檔案大小 索引檔案可能比資料檔案還要大 操作大量資料時最好 先去掉索引,再匯入,最後統一加索引 案例 設有新聞表15列,10列上有索引,共500w行資料,如何快速匯入?把空表的索引全部刪除 匯入資料 資料匯入完畢後,集中建索引 ...

MySQL 筆記8 儲存過程和索引

mysql 系列筆記是筆者學習 實踐mysql資料庫的筆記 mysql 資料庫基礎入門教程 mysql 官方文件 sql 教程 建立和呼叫 建立儲存過程 create procedure 名稱 delimiter 自定義分隔符 create procedure 名稱 begin 語句1 語句2 en...

mysql索引儲存 mysql索引和儲存引擎

mysql索引為什麼採用b 樹而不用b樹 1 b 樹只有葉節點存放資料,其餘節點用來索引,而b樹是每個索引節點都會有data域 索引放磁碟中,磁碟io就會增多 2 b 樹所有的data域在葉子節點,並且所有葉子節點之間都有乙個鏈指標。這樣遍歷葉子節點就能獲得全部資料,這樣就能獲得區間訪問了。在資料庫...