日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql全文索引FULLTEXT的哈希与BTREE方法对比

發布時間:2024/8/26 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql全文索引FULLTEXT的哈希与BTREE方法对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么【FULLTEXT】用【BTREE】?答案如下:

FULLTEXT

全文搜索的索引。FULLTEXT 用于搜索很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的 INDEX 也可以。

?

全文索引:

FULLTEXT(全文)索引,僅可用于MyISAM和InnoDB,針對較大的數據,生成全文索引非常的消耗時間和空間。對于文本的大對象,或者較大的CHAR類型的數據,如果使用普通索引,那么匹配文本前幾個字符還是可行的,但是想要匹配文本中間的幾個單詞,那么就要使用LIKE %word%來匹配,這樣需要很長的時間來處理,響應時間會大大增加,這種情況,就可使用時FULLTEXT索引了,在生成FULLTEXT索引時,會為文本生成一份單詞的清單,在索引時及根據這個單詞的清單來索引。FULLTEXT可以在創建表的時候創建,也可以在需要的時候用ALTER或者CREATE INDEX來添加:

//創建表的時候添加FULLTEXT索引 CTREATE TABLE my_table(id INT(10) PRIMARY KEY,name VARCHAR(10) NOT NULL,my_text TEXT,FULLTEXT(my_text) )ENGINE=MyISAM DEFAULT CHARSET=utf8; //創建表以后,在需要的時候添加FULLTEXT索引 ALTER TABLE my_table ADD FULLTEXT INDEX ft_index(column_name);

全文索引的查詢也有自己特殊的語法,而不能使用LIKE %查詢字符串%的模糊查詢語法

SELECT * FROM table_name MATCH(ft_index) AGAINST('查詢字符串');

對于較大的數據集,把數據添加到一個沒有FULLTEXT索引的表,然后添加FULLTEXT索引的速度比把數據添加到一個已經有FULLTEXT索引的表快

哈希索引:

只有memory(內存)存儲引擎支持哈希索引,哈希索引用索引列的值計算該值的hashCode,然后在hashCode相應的位置存執該值所在行數據的物理位置,因為使用散列算法,因此訪問速度非常快,但是一個值只能對應一個hashCode,而且是散列的分布方式,因此哈希索引不支持【范圍查找】【排序】的功能。

BTree索引:

BTree是平衡搜索多叉樹,設樹的度為2d(d>1),高度為h,那么BTree要滿足以一下條件:

每個葉子結點的高度一樣,等于h;
每個非葉子結點由n-1個key和n個指針point組成,其中d<=n<=2d,key和point相互間隔,結點兩端一定是key;
葉子結點指針都為null;
非葉子結點的key都是[key,data]二元組,其中key表示作為索引的鍵,data為鍵值所在行的數據;
在BTree的機構下,就可以使用二分查找的查找方式,查找復雜度為h*log(n),一般來說樹的高度是很小的,一般為3左右,因此BTree是一個非常高效的查找結構

希望能對大家有所幫助。

總結

以上是生活随笔為你收集整理的mysql全文索引FULLTEXT的哈希与BTREE方法对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。