mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化

查看所有存储过程:

show procedure status;

查看详细存储过程 ptest:

show create procedure ptest;

存储过程插入数据:

create table milli(id int auto_increment primary key, name varchar(20), num int);

truncate table milli;

delimiter $$

drop procedure if exists ptest;

create procedure ptest()

begin

declare pid int ;

set pid = 100000;

while pid>0 do

insert into milli values(null, "lili");

set pid = pid-1;

end while;

end $$

call ptest();

mysql查询优化:

那么如果我们也要查询所有列,有两种方法,一种是id>=的形式,另一种就是利用join,看下实际情况:

SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20

查询时间为0.2秒,简直是一个质的飞跃啊,哈哈

另一种写法

SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id

查询时间也很短,赞!

总结:

1.mysql嵌套子查询效率确实比较低

2.可以将其优化成连接查询

3.连接表时,可以先用where条件对表进行过滤,然后做表连接

(虽然mysql会对连表语句做优化)

4.建立合适的索引,必要时建立多列联合索引

5.学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要

SELECT s.* from Student s INNER JOIN SC sc on sc.s_id = s.s_id where sc.c_id=0 and sc.score=100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值