问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql,有一张表里面已经有几千万条数据了,网页访问时极其缓慢,如何提高...

发布网友 发布时间:2022-05-02 10:48

我来回答

4个回答

热心网友 时间:2022-05-02 21:32

一般查询的话应该有常用的语句的。
比如常见查询为:
select * from factdata where user='a' and mole='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:11:10';

那么你这时候需要在factdata表上建立(user,mole,dtime)的联合索引。
alter table factdata add index i_merge(`user`,`mole`,`dtime`);

你可以执行
explain select * from factdata where user='a' and mole='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了。追问我只是用 mysql-front 软件,把一些用到的字段设置成了索引,并没有建立联合索引。联合索引与单独的为某列设置索引有啥优劣???
还望赐教,谢谢!

页面显示的只是计算结果,只是几个数值,通过存储过程计算得到的结果,然后显示在页面上。
现在数据量越来越大了,问题就凸显了。
通过删除老旧数据,只保留了最近两个月的,居然没效果,非常奇怪,你认为是为什么呢?

追答好像单独的索引的话,只会用到单一的索引;而一个表上有多个单一索引的话,也只会选取其中最有效果的一个;而联合索引的话,可以更加精确。
比如:
select * from factdata where user='a' and mole='b' and dtime between '2012-11-01 00:10:00' and '2012-11-01 00:11:10';

假如只有一个user的索引的话,可能索引之后的记录数还是很多;但是user,mole,dtime的组合索引的话,查找的结果会更少;当然要试你的查询情况而定。
另外你还需要确定是你的查询慢,还是你的存储过程慢,有可能你只保留最近两个月的数据已经比较快了,但是因为你的存储过程慢,所以实际还是比较慢。你可以将存储过程里面的查询单独拿出来跑一下看看花费的时间。

热心网友 时间:2022-05-02 22:50

加索引,还有分页检索,sql 当初写的有问题,你不可能一次性全部都查出来扔给前台吧,那不是扯淡吗,啥页面也不可能一次性查看几千万啊,分页查询吧。只能从sql语句上更改

热心网友 时间:2022-05-03 00:25

把语句贴出来看看

热心网友 时间:2022-05-03 02:16

加索引试试,一下是索引创建的规则:
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。追问页面显示的只是计算结果,只是几个数值,通过存储过程计算得到的结果,然后显示在页面上。
现在数据量越来越大了,问题就凸显了。
通过删除老旧数据,只保留了最近两个月的,居然没效果,非常奇怪,你认为是为什么呢?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
检察院不批捕取保候审后还会提起诉讼吗 我老公长期在外地工作,每次回来后我们合房的第二天,两个人都觉得特别... 为什么第三次干事,老公不觉得紧,而我也没有那么疼呢,事后觉得有点涨 老公今年才25岁,为什么每次跟我做完爱后就倒头大睡,看起来很累的样子... ...回来就和我做了,做了两次,时间也比以前长,很累,谁知道为什么... 深圳市铭利达精密机械有限公司公司介绍 深圳市宝鑫五金机械厂公司介绍 CNC华明集团企业介绍 华为手机怎么退出talkback模式 华为手机talkback是什么意思_百度... ...开启了一个碰什么都会说那是什么的,这是怎么回事怎么解决? 国产手机哪个屏幕最好 国产品牌笔记本电脑哪种屏幕最靓丽? 现在用国产屏幕的国产机有哪些? 国产什么手机屏幕最好 国产手机哪家屏幕最好 执业医师考试成绩单怎么打印? 大学生暑期社会实践成绩考核表如何填写 怎么打印往年医师定期考核成绩单 如何才能获得dnf地下城免费宠物? 访问学者工作成绩考核表怎么填写 新兵档案中新兵连考核成绩单不见了怎么办? DNF宠物怎么免费得到? 用电子表格做个人考核成绩 上海话 刚刚一刚刚刚刚刚刚一刚一刚 dnf现版本怎么获得宠物? DNF中如何获得宠物装备? 生产许可证续期考核成绩表怎么填 上海话 一刚一刚一刚 是什么意思? DNF宠物怎么获得啊啊啊 上海话“垃圾得一刚”的意思? QQ三国怎么样才能得到声望快? QQ三国怎么才能快速弄声望呢? QQ三国怎么快得声望 QQ三国的声望怎么得才快? QQ三国里怎样快速提高声望呢? QQ三国怎样升声望快`? QQ三国如何快速提高声望 QQ三国怎么样得声望最快? 比亚迪宋Pro有定速巡航功能吗? 年度总结,我的宋pro用车感受和心得体会! 出游尽兴,大宋归来,分享一下宋Pro长途驾驶感受 家用动力不过剩,经济、标准、运动,老司机和宋Pro随心切换 比亚迪宋Pro燃油版亮点解析,值得购买的是自动豪华型 【车主点评:龙颜宋Pro近半年的用车感】 关于不良贷款和违约率 自主紧凑新黑马,4个月销量超6万台,比亚迪宋Pro全面解析 【车主点评:宋Pro这车给我不少惊喜】 【车主点评:路在脚下 宋Pro陪我前行】 长安cs75和比亚迪宋Pro怎么选择呢? 司法考试要看什么书?