Heim > Datenbank > MySQL-Tutorial > 数据库索引操作_MySQL

数据库索引操作_MySQL

WBOY
Freigeben: 2016-06-01 13:31:55
Original
1137 Leute haben es durchsucht

bitsCN.com

数据库索引操作

 

以前没用过索引,没能体会索引的好处,前阵子要处理几百万条记录的表,比如说两边查询,记录多了,查询的速度那是相当的慢,所以就试着用了索引,发现速度提升那可不是一点点,而是很多很多点。

 

具体操作如下:

 

一、首先创建两张表,如下图所示:

 

数据库索引操作_MySQL

 

建表语句如下

 

[sql] CREATE TABLE `t1` (    `ID` bigint(20) NOT NULL AUTO_INCREMENT,    `Num` int(11) NOT NULL,    PRIMARY KEY (`ID`)  ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
Nach dem Login kopieren

表二和表一类似创建

二、往两表中填充数据,用存储过程实现,步骤如下:

数据库索引操作_MySQL
数据库索引操作_MySQL
数据库索引操作_MySQL

以上是用navicat创建存储过程的界面,创建两个存储过程,分别网t1、t2中填充数据,代码分别如下:

填充t1的存储过程

[sql] BEGIN      #Routine body goes here...      declare n int;      set n = 1;      while n <= 50000      do          insert into t1(Num)     values(n);          set n = n + 1;      end while;  END  填充t2的存储过程[sql] BEGIN      #Routine body goes here...      declare n int;      set n = 1;      while n <= 25000      do          insert into t2(Num)     values(n);          set n = n + 1;      end while;            set n = 1;      while n <= 25000      do          insert into t2(Num)     values(0);          set n = n + 1;      end while;  END  
Nach dem Login kopieren

三、进行联表查询

求两表中,Num字段相同的行数,查询语句如下:

[sql] select count(*) from t1,t2 where t1.Num = t1.Num;  
Nach dem Login kopieren

t1的每一行都要和t2的每一行进行比较,也就是说t2要被从头到尾扫描50000次,如果数据再大点,再有耐心的人都等不下去了,所以必须想想办法,这里就可以用到索引了。创建索引的好处我在这里就不说了,只说一下如何用索引。

其实很简单,其他都不用变,只需在查询之前多做两件事:

第一、为t1创建索引;

第二、为t2创建索引;

创建索引的语句是:

[sql] create index Num_i1 on t1(Num);   create index Num_i2 on t2(Num);  
Nach dem Login kopieren

然后在执行一样的查询语句,没加索引在我电脑上跑要几分钟,加了索引之后,一眨眼的功夫就出结果了。

所以如果当数据量大的时候,一定记得用索引,如果有多个过滤条件,也可以对多个列进行索引。比如

create index Num_i1 on t1(ID,Num); 
Nach dem Login kopieren

 

 

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage