mysql,有一张表里面已经有几千万条数据了,网页访问时极其缓慢,如何提高检索速度?
一般查询的话应该有常用的语句的。
比如常见查询为:
select * from factdata where user='a' and module='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:11:10';
那么你这时候需要在factdata表上建立(user,module,dtime)的联合索引。
alter table factdata add index i_merge(`user`,`module`,`dtime`);
你可以执行
explain select * from factdata where user='a' and module='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:11:10';
图片来源:网络
查看建立索引前面的返回的结果。
假如没有索引的话,explain会显示返回查询全表的数据自然会很慢了。
假如用到了索引的话,可以快速的找到需要查询的区间里的数据,往往需要查询的数据量是全表的1/100,1/1000,那么这时候花费的时间就是1/100,1/1000了。
mysqlsum查询速度很慢?
这个问题和设计有关系,简单的sql优化提升不了多少,但是这个sql还是可以进一步优化的
利用索引,用unionall代替in,如select*fromtabwhereidin(1,2),可写成select*fromtabwhereid=1unionall
select*fromtabwhereid=2
但是上面的优化起不到根本效果,如果100万1000万数据怎么办,难道每次都要全部查出来嘛,那是不可能的,而且你的页面也不能全部都展示出来!所有需要换个思路,如,将一个会员的订单记录查询出来,然后通过程序(java或者存储过程)算出时间差,按照上面再计算下一个会员;
mysql缩表影响查询速度吗?
1. 缩表会影响查询速度。
2. 因为缩表操作会重新组织表的物理存储结构,将碎片化的数据页重新整理,减少数据页的数量,提高数据的连续性,从而减少磁盘IO操作。
但是在缩表过程中,需要对表进行锁定,可能会导致查询操作被阻塞,影响查询速度。
3. 此外,缩表操作还会引起索引的重建,索引的重建也会消耗一定的时间和资源。
因此,在进行缩表操作时,需要权衡缩表带来的性能提升和对查询速度的影响,根据具体情况来决定是否进行缩表操作。
mysql中缩表影响查询速度吗?
1. 缩表会影响查询速度。
2. 因为缩表操作会重新组织表的物理存储结构,将碎片化的数据页重新整理,减少数据页的数量,提高数据的连续性,从而减少磁盘IO操作。
但是在缩表过程中,需要对表进行锁定,可能会导致查询操作被阻塞,影响查询速度。
3. 此外,缩表操作还会引起索引的重建,索引的重建也会消耗一定的时间和资源。
因此,在进行缩表操作时,需要权衡缩表带来的性能提升和对查询速度的影响,根据具体情况来决定是否进行缩表操作。