mysql索引比较分析 mysql索引表使用
创始人
2024-07-15 21:20:23
0

mysql索引让我们的查询效率大大提高,但是,也不是所有情况都需要用到mysql索引,下面就让我们来分析一下mysql索引的使用。

mysql中的表有两种key,一种是primary key,还有secondary key。

如:

  1. CREATE TABLE layout_test (  
  2.  
  3.    col1 int NOT NULL,  
  4.  
  5.    col2 int NOT NULL,  
  6.  
  7.    PRIMARY KEY(col1),  
  8.  
  9.    KEY(col2)  
  10.  
  11. );  

col1是primary key,col2是secondary key。它们建立mysql索引。

以下简称为pk和sk。

myisam:

在myisam中,pk和sk的数据存储方式是一样的。都是b-tree的叶节点上存储行号,即数据行的指针。

innodb:

在innodb中不太一样。

pk是以聚簇索引存在的,并且在b-tee的叶节点上存放着primary key的值和其它列的值及事务ID和回滚指针。(innodb的primary index是聚簇索引)

sk的叶节点上也与myisam不太一样,它存放着primary key的值(而不是数据的行指针)。

只有按最左边前缀查询的才会利用上索引。

下面这段来自mysql使用手册:

  1. mysql> CREATE TABLE test (  
  2.            id INT NOT NULL,  
  3.            last_name CHAR(30) NOT NULL,  
  4.            first_name CHAR(30) NOT NULL,  
  5.            PRIMARY KEY (id),  
  6.            INDEX name (last_name,first_name)); 

那么mysql索引name是一个在last_name和first_name上的索引,这个索引将被用于在last_name或last_name和first_name的一个已知范围内指定值的查询,因此,name索引将使用在下列查询中:

  1. mysql> SELECT * FROM test WHERE last_name="Widenius";  
  2.  
  3. mysql> SELECT * FROM test WHERE last_name="Widenius" 
  4.                           AND first_name="Michael";  
  5.  
  6. mysql> SELECT * FROM test WHERE last_name="Widenius" 
  7.                           AND (first_name="Michael" OR first_name="Monty");  
  8.  
  9. mysql> SELECT * FROM test WHERE last_name="Widenius" 
  10.                           AND first_name >="M" AND first_name < "N";  
  11. 然而,name索引将不用在下列询问中:   
  12.  
  13. mysql> SELECT * FROM test WHERE first_name="Michael";  
  14.  
  15. mysql> SELECT * FROM test WHERE last_name="Widenius" 
  16.                           OR first_name="Michael";  
  17.  

 

 

 

【编辑推荐】

MySQL索引的用处

mysql索引的不足

实现ADO连接MYSQL的实现

mysql触发器new old介绍

建立MySQL触发器的语法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...