程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql hash索引優化,mysqlhash索引

mysql hash索引優化,mysqlhash索引

編輯:MySQL綜合教程

mysql hash索引優化,mysqlhash索引


創建表

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `msg` varchar(20) NOT NULL DEFAULT '',
  `crcmsg` int(15) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

//插入數據

insert into t1 (msg) values('www.baidu.com'),('www.sina.com');

分別給msg, crcmsg 字段添加索引

alter table t1 add index msg(msg(5));

update t1 set crcmsg=crc32(msg);

alter table t1 add index crcmsg(crcmsg);

開始做測試

最後數據表結構

 根據key_len的長度的大小從而給數據庫查詢提高速度。

自己做的小測試,希望能夠給您帶來收獲,祝您工作愉快。

 


MySQL數據庫優化(七):MySQL怎使用索引

  索引用於快速找到特定一些值的記錄。如果沒有索引,MySQL就必須從第一行記錄開始讀取整個表來檢索記錄。表越大,資源消耗越大。如果在字段上有索引的話,MySQL就能很快決定該從數據文件的哪個位置開始搜索記錄,而無須查找所有的數據。如果表中有1000條記錄的話,那麼這至少比順序地讀取數據快100倍。注意,如果需要存取幾乎全部1000條記錄的話,那麼順序讀取就更快了,因為這樣會使磁盤搜索最少。
  大部分MySQL索引(PRIMARY KEY, UNIQUE,INDEX 和 FULLTEXT)都是以B樹方式存儲。只有空間類型的字段使用R樹存儲,MEMORY (HEAP)表支持哈希索引。
  字符串默認都是自動壓縮前綴和後綴中的空格。
  通常,如下所述幾種情況下可以使用索引。哈希索引(用於 MEMORY 表)的獨特之處在後面會討論到。
  想要盡快找到匹配 WHERE 子句的記錄。
  根據條件排除記錄。如果有多個索引可共選擇的話,MySQL通常選擇能找到最少記錄的那個索引。
  做表連接查詢時從其他表中檢索記錄。
  想要在指定的索引字段 key_col 上找到它的 MIN() 或 MAX() 值。優化程序會在檢查索引的
  key_col 字段前就先檢查其他索引部分是否使用了 WHERE key_part_# = constant 子句。這樣的話,
  MySQL會為 MIN() 或 MAX() 表達式分別單獨做一次索引查找,並且將它替換成常數。當所有的表達式都被替換成常數後,查詢就立刻返回。如下:
  SELECT MIN(key_part2),MAX(key_part2) FROM tbl_name WHERE key_part1=10;
  對表作排序或分組,當在一個可用的最左前綴索引上做分組或排序時(如 ORDER
  BY key_part1, key_part2)。如果所有的索引部分都按照 DESC 排序,索引就按倒序排序。
  有些時候,查詢可以優化使得無需計算數據就能直接取得結果。當查詢使用表中的一個數字型字段,且這個字段是索引的最左部分,則可能從索引樹中能很快就取得結果:
  SELECTkey_part3FROMtbl_nameWHEREkey_part1=1
  假設有如下 SELECT 語句:
  如果在 col1 和 col2 上有一個多字段索引的話,就能直接取得對應的記錄了。
 

MYSQL BTREE索引與HASH索引有何不同?

貌似 HASH索引只能用在MEMORY/HEAP類型表裡,這種格式的沒用過
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved