mysql的索引和儲存過程

2021-09-23 08:15:17 字數 2162 閱讀 8970

2、儲存過程:

好處,加快了查詢速度

壞處,降低了增刪改的速度,增大了表的檔案大小(索引檔案可能比資料檔案還要大)

操作大量資料時最好:先去掉索引,再匯入,最後統一加索引

案例:設有新聞表15列,10列上有索引,共500w行資料,如何快速匯入?

把空表的索引全部刪除

匯入資料

資料匯入完畢後,集中建索引

不過度索引

索引條件列(where後面最頻繁的條件比較適宜索引)

索引雜湊值,過於集中的值不要索引

主鍵必唯一,但是唯一索引不一定是主鍵;

一張表上,只能有乙個主鍵,但是可以有乙個或多個唯一索引

檢視乙個表上的所有索引:show index from 表名;

建立索引:

alter table 表名 add index/unique index/fulltex index 索引名(列名)

alter table 表名 add primary key (列名) //不要加索引,因為主鍵只有乙個

刪除非主鍵索引:

alter table 表名 drop index 索引名;
刪除主鍵索引:

alter table 表名 drop index primary key;
全文索引用法:

select * from 表名 where match(列名) against('要匹配的詞或句子');

select id ,email,match(列名) against('要匹配的詞或句子') from 表名;//顯示匹配度

**關於全文索引的停止詞:**全文索引不針對非常頻繁的詞做索引,如this,is,you,my等

全文索引:在mysql的預設情況下,對於中文意義不大

因為英文有空格,標點符號來拆成單詞,進而對單詞進行索引,而對於中文,沒有空格來隔開單詞,mysql無法識別每個單詞

類似於函式,就是把一段**封裝取來,當要執行這一段**的時候,可以通過呼叫該儲存過程來實現。在封裝的語句體裡面,可以用if/else,case,while等控制結構。可以進行mysql程式設計。

show procedure status \g; #\g 為橫向顯示
drop procedure 儲存過程的名字;
簡單建立

create procedure p1() 

begin

select * from g;

end&

呼叫:

call p1()&
傳參

create procedure p2(n int)

begin

select * from g where num >n;

end&

call p2(10)&
控制結構

create procedure p3(n int, j char(1)) 

begin

if j='h' then

select * from g where num >n;

else

select * from g where num

迴圈結構

create procedure p4(n smallint)

begin

declare i smallint;

declare s int;

set i=1;

set s=0;

while i<=n do

set s=s+i;

set i=i+1;

end while;

select s;

end&

call p4(100)&
在mysql中,儲存過程和函式的區別:

名稱不同

儲存過程沒有返回值

Mysql索引概念和儲存過程

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

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域在葉子節點,並且所有葉子節點之間都有乙個鏈指標。這樣遍歷葉子節點就能獲得全部資料,這樣就能獲得區間訪問了。在資料庫...