数据库索引
来源:互联网 发布:power point for mac 编辑:程序博客网 时间:2024/06/15 04:57
以前没用过索引,没能体会索引的好处,前阵子要处理几百万条记录的表,比如说两边查询,记录多了,查询的速度那是相当的慢,所以就试着用了索引,发现速度提升那可不是一点点,而是很多很多点。
具体操作如下:
一、首先创建两张表,如下图所示:
建表语句如下
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的存储过程
BEGIN#Routine body goes here... declare n int;set n = 1;while n <= 50000doinsert into t1(Num) values(n);set n = n + 1;end while;END填充t2的存储过程
BEGIN#Routine body goes here...declare n int;set n = 1;while n <= 25000doinsert into t2(Num) values(n);set n = n + 1;end while; set n = 1;while n <= 25000doinsert into t2(Num) values(0);set n = n + 1;end while;END
三、进行联表查询
求两表中,Num字段相同的行数,查询语句如下:
select count(*) from t1,t2 where t1.Num = t2.Num;t1的每一行都要和t2的每一行进行比较,也就是说t2要被从头到尾扫描50000次,如果数据再大点,再有耐心的人都等不下去了,所以必须想想办法,这里就可以用到索引了。创建索引的好处我在这里就不说了,只说一下如何用索引。
其实很简单,其他都不用变,只需在查询之前多做两件事:
第一、为t1创建索引;
第二、为t2创建索引;
创建索引的语句是:
create index Num_i1 on t1(Num); create index Num_i2 on t2(Num);然后在执行一样的查询语句,没加索引在我电脑上跑要几分钟,加了索引之后,一眨眼的功夫就出结果了。
所以如果当数据量大的时候,一定记得用索引,如果有多个过滤条件,也可以对多个列进行索引。比如create index Num_i1 on t1(ID,Num);
- 数据库 索引&索引类型
- 数据库索引,联合索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库 索引
- 数据库索引
- 数据库索引
- 数据库索引
- 数据库 索引
- CRT中的汉字复制出来成乱码的解决办法
- Unity3D研究院之脚本批量打包渠道包研究
- 用PDB库调试Python程序
- hdu 2553 N皇后问题
- STM32F10x学习笔记--工程建立
- 数据库索引
- ObservableCollection的泛型查找功能
- Binary Tree Zigzag Level Order Traversal
- 欧拉函数
- C#后台调用前台js方法
- WindowAdapter适配器(一)
- 设置信号信号处理函数void (*signal (int signo ,void (*fun)(int )))(int)
- Unity插件研究院之ResourceChecker
- 黑马程序员之HTML+CSS六