亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL(一)數據庫索引類型,索引優點

發布時間:2020-07-01 03:31:38 來源:網絡 閱讀:31596 作者:sun_tantan 欄目:MySQL數據庫

索引在mysql中也叫做鍵(key),是存儲引擎用于快速找到記錄的一種數據結構。

索引結構類型(常見有兩種)

1. B-Tree索引

大多數mysql引擎都支持這種索引;

        1.B-Tree通常意味著所有的值都是按順序存儲的,

        2.并且每一個葉子頁到根的距離相同

存儲引擎不需要進行全表掃描來獲取需要的數據,取而代之是從索引的根節點開始進行搜索;

適用于:

A. 全鍵值查找(全值匹配)

B. 鍵值范圍(若是有多列的合并索引,需要精確匹配某一列并范圍匹配另一列)

C. 鍵前綴查找

D. 按順序查找(order by)

限制:

A. 如果不是按照索引的最左列開始查找,則無法使用索引

B. 不能跳過索引中的列

C. 如果查詢中有某個列的范圍查詢,其右邊的所有列都無法使用索引優化查詢

2. 哈希索引

在mysql中,只有memory引擎顯式支持哈希索引;基于哈希表實現,只有精確匹配索引所有列的查詢才有效;對于每一行數據,存儲引擎會對所有的索引列計算一個哈希碼,不同的鍵值行計算出的哈希碼不一樣,哈希索引將所有的哈希碼存儲在索引中,同時在哈希表中保存指向每個數據行的指針;(hash索引結構:hash值:指針)

優勢:

查找速度非常快

限制:

A. 無法用于排序

B. 不支持部分索引列匹配查找

C. 只支持等值比較查詢

存儲引擎不支持哈希索引時,可以建立自定義哈希:

如:建表pseudohash:id,url,url_crc;

建立觸發器:insert數據時 set new.url_crc = crc32(new.url);

Update數據時 set new.url_crc = crc32(new.url);

查找:select url , url_crc from pseudohash where url_crc = crc32(“www.baidu.com”) and url = “www.baidu.com”;

在where語句中帶人hash值和對應列值。



索引功能類型

1.普通索引(INDEX 

    CREATE INDEX index_name ON table_name (column_list);

2.唯一索引(UNIQUE INDEX

    mysql數據庫索引列的值必須唯一,但允許有空置。如果是組合索引,列值的組合必須唯一。

    CREATE UNIQUE INDEX index_name ON table_name (column_list)

3.主鍵索引(PRIMARY KEY)

    是一種特殊的唯一索引,不允許有空置,一般在建表時創建

    CREATE TABLE table_name ( 

     ID INT NOT NULL, 

     [column] VARCHAR(16) NOT NULL, 

    PRIMARY KEY(ID)   

     );  

4.全文索引:(FULLTEXT)只可以用在MyISAM引擎

    對大數據文本進行索引,在建立的索引中對要查找的單詞進行搜索,定位哪些文本數據包括要搜索的單詞。

    1,建立索引   2,在索引中搜索定位

    //針對content做了全文索引:

    CREATE TABLE `table` (

    `id` int(11) NOT NULL AUTO_INCREMENT ,

    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,

    PRIMARY KEY (`id`),

    FULLTEXT (content) );

    查找時:

    SELECT * FROM article WHERE MATCH( content) AGAINST('想查詢的字符串')



索引的優點:

1. 可以讓服務器快速定位到表的指定位置,大大減少了服務器需要掃描的數據量

2. 最常見的b-tree索引按照順序存儲數據,可以用來做order by和group by,幫助服務器避免排序和臨時表,將隨機I/O變為順序I/O

3. 因為索引中存儲了實際的列值,某些查詢只需要使用索引就能完成全部查詢


索引優化

      1. 前綴索引

         問題:有時候索引需要存儲很長的字符串,會讓索引變得大且慢

         解決:1. hash索引 2. 前綴索引

         索引的選擇性:不重復的索引值 / 數據表的記錄總數,數值越高性能越好;

                            唯一索引的選擇性是1,性能是最好的

          計算適合的前綴長度,使前綴的選擇性接近于完整列的選擇性。Mysql無法使用前綴索引做order by和group by,也無法使用前綴索引做覆蓋掃描;

       2. 選擇合適的索引列順序

          將選擇性最高的列放在索引最前列


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安徽省| 弋阳县| 延寿县| 洛阳市| 司法| 襄垣县| 莆田市| 定远县| 荆州市| 化州市| 宝山区| 古交市| 子长县| 信阳市| 安平县| 湟中县| 兰考县| 尼玛县| 萝北县| 广饶县| 沽源县| 固镇县| 沈丘县| 兴义市| 定西市| 手游| 洛川县| 吐鲁番市| 新民市| 临西县| 准格尔旗| 枝江市| 青阳县| 德庆县| 桂阳县| 确山县| 葵青区| 会东县| 苍山县| 安图县| 雅安市|