会。
——回复内容太短(最少5个字),再写点吧!
有什么解决方案吗
@飞翔的秋秋: 空间代替时间,如缓存、列索引、视图或者其他自建方式等等。
@花飘水流兮:我只加了索引,其他的我不会!缓存和视图怎么加!
时间字段加索引了吗?不知道你用的什么数据库,有的数据库索引是不支持倒序,你的是正序还是倒序?
我用的Oracle 数据库,没加时间索引,
@飞翔的秋秋: 加上试试
@会长:我没加条件,只是全表用时间 order by desc 排序查很慢,我加了条件查询会比全表查询要快点
@飞翔的秋秋: 好,根据查询条件加加索引吧。如果下过不理想,那就的另想办法了
@会长:嗯嗯,现在有三四百万条数据,一条大概要新增两三万笔数据,不知道影响会不会很大,我用的存储过程去查和新增,应该比单独查和新增要好点
@飞翔的秋秋: 这么大的数据量,得好好设计设计
@会长:因为做了一个条码打印,一条要打几万个条码,每个码都要存在数据库我第一次做,没啥经验,你有做过雷似的吗?分享下你的经验
@飞翔的秋秋: 没。数据库设计的好一点。然后还有性能问题的话就得用其它手段解决了,比如缓存什么的。
数据库单表数据太多可以考虑分表,根据查询条件把索引弄好,如果还是不行,考虑分库。反正就是化整为零总是对的。
@会长:哦!好的,谢谢你!非常感谢!
分表,把表横向进行横向切分,pk0-10000为一个表,pk10000-20000为一个表
没太懂你的意思!
@飞翔的秋秋: 很简单呀,你几百万行你就查这个表这个表数据都要遍历一遍,你把几百万条先进行分块一块就一万条,首先数据线满足主键在0-10000再查0-1000的表只要筛选10000条数据就好了,查的就快咯
这跟我的需求来说行不通,我做的是条码打印新增,每获取一个条码要要查询上一个条码的流水号,然后在给他加一再新增,如此重复,而且我这个条码内容是不固定的,所以不好判断当前这个条码存在那一张表里,如果只是一个固定的条码,这样查询会好一些,
@飞翔的秋秋: 你还没明白, 你先自己详细去看看数据库数据库纵向分割和横向分割,割也不是瞎割的有规律的
@飞翔的秋秋: 纵向切割是把单表变成多个有一对一关系的表,横向切割本质是进行多次筛选,把范围变小查的内容变少
@飞翔的秋秋: 你说表不固定是吧,你可以先创建200个表每个表默认存10000个数据(这里都是逻辑业务解决就可以了)可以实现的吧,然都是空表,然后把已有数据进行横向分割添加,在加个计数这个计数是当前已经存了多条(这里使用一次查数据条数)之后就是在数据库查数据之外逻辑业务搞定,然后也是业务逻辑判断输入的值在什么范围内去哪个表查,然后再使用查表语句查数据库
@小小咸鱼YwY:我的数据都是存在一张表里的,你说的分表查询我还是不太明白,
@飞翔的秋秋: https://www.cnblogs.com/pythonywy/p/11221705.html,你只会索引就看我之前总结的这篇吧,我横向分割和纵向分割没怎么总结他只是个思想,我里面还有总结视图,你自己翻翻看看
@小小咸鱼YwY:我用的存储过程去新增和查询,查询加了索引,速度稍微快了些,但是数据库表里已经有三四百万条数据了,每天还会新增大概两三万四五万条数据,所以我有点担心!没想到什么好的办法!
@飞翔的秋秋: 一般系统每个表的流水号可用单独一张表管理,这样产生新的流水号可用脱离上一条记录。如果旧记录不是经常查询,可以移到另一张结构相同的表。