首页 新闻 会员 周边 捐助

数据库几百万条数据,在存储过程里根据条件去新增和查询!数据量过大会不会很慢,我全表根据时间排序要大半天

0
[待解决问题]

数据库几百万条数据,在存储过程里根据条件去新增和查询!数据量过大会不会很慢,我全表根据时间排序要大半天

飞翔的秋秋的主页 飞翔的秋秋 | 菜鸟二级 | 园豆:238
提问于:2019-08-22 15:10
< >
分享
所有回答(4)
0

会。

——回复内容太短(最少5个字),再写点吧!

花飘水流兮 | 园豆:13617 (专家六级) | 2019-08-22 15:16

有什么解决方案吗

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:17

@飞翔的秋秋: 空间代替时间,如缓存、列索引、视图或者其他自建方式等等。

支持(0) 反对(0) 花飘水流兮 | 园豆:13617 (专家六级) | 2019-08-22 15:18

@花飘水流兮:我只加了索引,其他的我不会!缓存和视图怎么加!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:22
0

时间字段加索引了吗?不知道你用的什么数据库,有的数据库索引是不支持倒序,你的是正序还是倒序?

会长 | 园豆:12463 (专家六级) | 2019-08-22 15:32

我用的Oracle 数据库,没加时间索引,

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:34

@飞翔的秋秋: 加上试试

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2019-08-22 15:35

@会长:我没加条件,只是全表用时间 order by desc 排序查很慢,我加了条件查询会比全表查询要快点

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:39

@飞翔的秋秋: 好,根据查询条件加加索引吧。如果下过不理想,那就的另想办法了

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2019-08-22 15:42

@会长:嗯嗯,现在有三四百万条数据,一条大概要新增两三万笔数据,不知道影响会不会很大,我用的存储过程去查和新增,应该比单独查和新增要好点

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:47

@飞翔的秋秋: 这么大的数据量,得好好设计设计

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2019-08-22 15:51

@会长:因为做了一个条码打印,一条要打几万个条码,每个码都要存在数据库我第一次做,没啥经验,你有做过雷似的吗?分享下你的经验

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 15:57

@飞翔的秋秋: 没。数据库设计的好一点。然后还有性能问题的话就得用其它手段解决了,比如缓存什么的。

数据库单表数据太多可以考虑分表,根据查询条件把索引弄好,如果还是不行,考虑分库。反正就是化整为零总是对的。

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2019-08-22 16:00

@会长:哦!好的,谢谢你!非常感谢!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-22 16:03
0

当然会很慢
加索引

ycyzharry | 园豆:25683 (高人七级) | 2019-08-22 22:20

我加了索引了,一次循环新增四个,当我新增5000个的时候,刚开始很快,后面就慢了!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-23 08:39
支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2019-08-24 11:45
0

分表,把表横向进行横向切分,pk0-10000为一个表,pk10000-20000为一个表

小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:09

没太懂你的意思!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-23 15:12

@飞翔的秋秋: 很简单呀,你几百万行你就查这个表这个表数据都要遍历一遍,你把几百万条先进行分块一块就一万条,首先数据线满足主键在0-10000再查0-1000的表只要筛选10000条数据就好了,查的就快咯

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:15

这跟我的需求来说行不通,我做的是条码打印新增,每获取一个条码要要查询上一个条码的流水号,然后在给他加一再新增,如此重复,而且我这个条码内容是不固定的,所以不好判断当前这个条码存在那一张表里,如果只是一个固定的条码,这样查询会好一些,

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-23 15:22

@飞翔的秋秋: 你还没明白, 你先自己详细去看看数据库数据库纵向分割和横向分割,割也不是瞎割的有规律的

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:28

@飞翔的秋秋: 纵向切割是把单表变成多个有一对一关系的表,横向切割本质是进行多次筛选,把范围变小查的内容变少

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:30

@飞翔的秋秋: 你说表不固定是吧,你可以先创建200个表每个表默认存10000个数据(这里都是逻辑业务解决就可以了)可以实现的吧,然都是空表,然后把已有数据进行横向分割添加,在加个计数这个计数是当前已经存了多条(这里使用一次查数据条数)之后就是在数据库查数据之外逻辑业务搞定,然后也是业务逻辑判断输入的值在什么范围内去哪个表查,然后再使用查表语句查数据库

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:43

@小小咸鱼YwY:我的数据都是存在一张表里的,你说的分表查询我还是不太明白,

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-23 15:47

@飞翔的秋秋: https://www.cnblogs.com/pythonywy/p/11221705.html,你只会索引就看我之前总结的这篇吧,我横向分割和纵向分割没怎么总结他只是个思想,我里面还有总结视图,你自己翻翻看看

支持(0) 反对(0) 小小咸鱼YwY | 园豆:3312 (老鸟四级) | 2019-08-23 15:52

@小小咸鱼YwY:我用的存储过程去新增和查询,查询加了索引,速度稍微快了些,但是数据库表里已经有三四百万条数据了,每天还会新增大概两三万四五万条数据,所以我有点担心!没想到什么好的办法!

支持(0) 反对(0) 飞翔的秋秋 | 园豆:238 (菜鸟二级) | 2019-08-23 16:06

@飞翔的秋秋: 一般系统每个表的流水号可用单独一张表管理,这样产生新的流水号可用脱离上一条记录。如果旧记录不是经常查询,可以移到另一张结构相同的表。

支持(0) 反对(0) geass.. | 园豆:1821 (小虾三级) | 2019-08-24 10:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册