MySQL 筆記8 儲存過程和索引

2021-08-31 09:20:06 字數 3175 閱讀 8791

mysql 系列筆記是筆者學習、實踐mysql資料庫的筆記

mysql 資料庫基礎入門教程

mysql 官方文件

sql 教程

建立和呼叫:

# 建立儲存過程

create procedure 名稱()

delimiter 自定義分隔符

create procedure 名稱()

begin

語句1;

語句2;

...end 自定義分隔符

delimiter ;

# 呼叫儲過程

call 名稱();

刪除儲存過程:

drop procedure  名稱
檢視儲存過程:

# 檢視所有儲存過程

show procedure status;

# 檢視指定資料庫中的儲存過程

show procedure status where db = 'my_test4';

# 檢視指定儲存過程源**

show create procedure 儲存過程名

儲存過程變數:

# 宣告變數

declare 變數名 資料型別(大小) default 預設值;

declare 變數名1,變數名2 資料型別(大小) default 預設值;

# 分配變數值

set 變數名 = 值;

select count(*) into 變數名 from 表名

儲存過程引數:in,out,inout

# in:表示呼叫者向過程傳入值(傳入值可以是字面量或變數)

# out:表示過程向呼叫者傳出值

# inout:inout引數是in和out引數的組合。

create procedure 名稱([in | out | inout ] 引數名 資料型別)

儲存過程語句:

# if語句

if expression then

statements;

else

else-statements;

end if;

# case語句

case case_expression

when when_expression_1 then commands

when when_expression_2 then commands

...else commands

end case;

# while迴圈

while expression do

statements

end while

# repeat迴圈

repeat

statements;

until expression

end repeat

索引的分類:類別

說明單值索引

即乙個索引只包含單個列,乙個表可以有多個單列索引。

唯一索引

索引列的值必須唯一,但允許有空值

復合索引

乙個索引包含多個列,index multiidx(id,name,age)

全文索引

只有在myisam引擎上才能使用,只能在char,varchar,text型別欄位上使用全文索引

索引命令:功能

命令建立索引

create index 索引名稱 on 表名 (column[, column]…);

刪除索引

drop index 索引名稱 on 表名

檢視索引

show index from 表名;

索引屬性:屬性

說明table

表名non_unique

如果索引不能包括重複詞,則為0。如果可以,則為1

key_name

索引的名稱

seq_in_index

索引中的列序列號,從1開始

column_name

列名稱collation

索引的儲存方式,有值『a』(公升序)或null(無分類)。

cardinality

索引中唯一值的數目的估計值

sub_part

列被部分被編入索引的字元數目,如果整列被編入索引,則為null

packed

指示關鍵字如何被壓縮。如果沒有被壓縮,則為null

null

如果列含有null,則含有yes。如果沒有,則no

index_type

用過的索引方法(btree, fulltext, hash, rtree)。

comment

索引備註資訊

自動建立索引:

# 格式

explain select語句

資訊

說明id

select的查詢序列號:一條語句中該select是第幾次出現,在次語句中select就只有乙個id=1

select_type

select查詢型別,******表示簡單的select,即不使用union或子查詢

table

資料表的名字,他們按被讀取的先後順序排列

type

指定本資料表和其他資料表之間的關聯關係

key實際選用的索引

possible_keys

mysql搜尋資料記錄時可以選用的索引

key_len

使用的索引個數

ref給出關聯關係中另乙個資料表中資料列的名字

rows

mysql在執行這個查詢時預計會從這個資料表裡讀出的資料行的個數

extra

提供了與關聯操作有關的資訊,沒有則什麼都不寫

需要索引的情況:

不需要索引的情況:

good luck!

Mysql索引概念和儲存過程

1.二叉樹索引,時間複雜度o lgn 2.雜湊表,時間複雜度o 1 1.不過度索引 2.索引條件列 where後面最頻繁的條件比較適宜索引 3.索引雜湊值,過於集中的值不要索引。例如 給 男 女 索引,意義不大。降低了增刪改的速度 update delete insert 增大了表的檔案大小 索引檔...

mysql的索引和儲存過程

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

mysql 儲存過程筆記 mysql儲存過程筆記

儲存過程是一組完成特定功能的sql語句集合,已經被編譯好,可以直接拿來被執行,可以傳參 引數有三種型別,in out inout in型別的引數,可以在儲存過程的方法體裡面被呼叫,但是無法影響外部 out型別的引數,無法被內部呼叫,儲存過程出來的結果可以影響外部 inout型別的引數,可以被接收呼叫...