• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

数据库索引操作_MySQL

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

gaodaima.com

数据库索引操作

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

具体操作如下:

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

建表语句如下

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

表二和表一类似创建

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

以上是用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  

三、进行联表查询

求两表中,Num字段

本文来源gaodai.ma#com搞##代!^码网(

相同的行数,查询语句如下:

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

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

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

第一、为t1创建索引;

第二、为t2创建索引;

创建索引的语句是:

[sql] create index Num_i1 on t1(Num);   create index Num_i2 on t2(Num);  

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

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

create index Num_i1 on t1(ID,Num); 

gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:数据库索引操作_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址