自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

mysql索引比較分析

數(shù)據(jù)庫(kù) MySQL
在mysql數(shù)據(jù)庫(kù)中進(jìn)行查詢時(shí),不是有所情況下都要用到索引,還是需要具體問(wèn)題具體分析,下面讓我們看看,什么情況需要使用索引。

mysql索引讓我們的查詢效率大大提高,但是,也不是所有情況都需要用到mysql索引,下面就讓我們來(lái)分析一下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索引。

以下簡(jiǎn)稱為pk和sk。

myisam:

在myisam中,pk和sk的數(shù)據(jù)存儲(chǔ)方式是一樣的。都是b-tree的葉節(jié)點(diǎn)上存儲(chǔ)行號(hào),即數(shù)據(jù)行的指針。

innodb:

在innodb中不太一樣。

pk是以聚簇索引存在的,并且在b-tee的葉節(jié)點(diǎn)上存放著primary key的值和其它列的值及事務(wù)ID和回滾指針。(innodb的primary index是聚簇索引)

sk的葉節(jié)點(diǎn)上也與myisam不太一樣,它存放著primary key的值(而不是數(shù)據(jù)的行指針)。

只有按最左邊前綴查詢的才會(huì)利用上索引。

下面這段來(lái)自mysql使用手冊(cè):

  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是一個(gè)在last_name和first_name上的索引,這個(gè)索引將被用于在last_name或last_name和first_name的一個(gè)已知范圍內(nèi)指定值的查詢,因此,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索引將不用在下列詢問(wèn)中:   
  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索引的不足

實(shí)現(xiàn)ADO連接MYSQL的實(shí)現(xiàn)

mysql觸發(fā)器new old介紹

建立MySQL觸發(fā)器的語(yǔ)法

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2018-06-26 15:58:06

數(shù)據(jù)庫(kù)MySQL索引優(yōu)化

2009-12-09 09:30:04

LinuxuClinux

2010-07-30 16:00:36

ICMP協(xié)議

2024-06-21 09:25:34

2010-11-26 13:58:48

MySQL字符串匹配

2020-09-28 15:34:38

ElasticSear索引MySQL

2015-10-30 15:55:43

MySQL

2011-03-29 13:25:12

ZabbixNagiosZenoss

2009-09-03 11:47:43

Groovy與Java

2017-04-27 10:38:28

排序算法比較分析

2012-07-02 14:47:38

HTML5

2020-08-23 12:02:59

商業(yè)智能商業(yè)分析數(shù)據(jù)

2011-03-31 13:51:54

MySQL索引

2017-09-04 16:03:46

MySQLMySQL索引索引

2024-03-26 12:16:13

MySQLInnodb數(shù)據(jù)庫(kù)

2022-05-23 08:05:14

benchstat工具Go

2022-06-09 08:23:33

預(yù)測(cè)分析工具人工智能

2022-03-25 10:38:40

索引MySQL數(shù)據(jù)庫(kù)

2013-06-08 11:25:18

路由協(xié)議路由技術(shù)路由器

2011-03-15 11:16:59

MySQL數(shù)據(jù)庫(kù)可靠性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)