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或者存储过程)算出时间差,按照上面再计算下一个会员;
如何提高mysqlinsert速度
下面一些方法可以加快
mysql数据库导入数据的速度:
1、最快的当然是直接copy数据库表的数据文件(版本和平台最好要相同或相似);
2、设置innodb_flush_log_at_trx_commit=0,相对于innodb_flush_log_at_trx_commit=1可以十分明显的提升导入速度;
3、使用loaddatalocalinfile提速明显;
4、修改参数bulk_insert_buffer_size,调大批量插入的缓存;
5、合并多条insert为一条:insertintotvalues(a,b,c),(d,e,f),,,
6、手动使用事物;
mongoDB插入速度怎么比MySQL还慢
几个大型数据库的写入速度都很快的,性能主要看并发量的吧,比如100w的数据写入要多少秒,mongodb在数据量大的时候,并发还是杠杠的,比mysql要强,不过mongodb在数据统计上面还是有些缺陷的,没有mysql好用,这个只是个人观点,想要更加了解mongodb还需要自己多逛逛官网论坛,多敲敲键盘
还没有评论,来说两句吧...