怎么处理大数据量的复杂查询?

问题描述

小弟现在是要做一个这样的事情,一个日志的查询系统。这个日志要从4个表中查出来,每个表有几十万条数据(以后可能增长到几百万条)。 我现在用的是最平常的子查询,可是java中出报出内存溢出的异常(偶尔能查询出来,不过那速度真的忍受不了),我就想问问各位大侠你们怎么处理这样的大数据量,而且有复杂的关联关系的查询啊? 问题表述不清,还请各位多多包涵。 问题补充:fool_leave 写道

解决方案

查询一个机构下所有账户的所有日志。。。。这肯定溢出啊。 。基本大型应用里不能取查 ‘所有’ 的你要给个条件限制,或者做分页,仔细再分析一下业务场景吧,需要变通一下
解决方案二:
你报内存溢出不是因为查询慢的原因吧,应该是结果集过大导致。这个与查询效率无关的吧
解决方案三:
把SQL发上来看看哈~
解决方案四:
对关键字段做索引。如果数据有规律,可以分到多个表中。在查询的条件语句里,第一步将最多的干扰项排除。比如要查询人。条件:男,20~39岁,已婚那第一个条件用“男”将一般的干扰项排除,第二个条件我建议是“已婚”,第三个是年龄。还有就是不同字段筛选速度不一样,字符串和数字的速度差别就很大。好像具体的数据库要具体对待吧。

时间: 2024-09-13 11:04:29

怎么处理大数据量的复杂查询?的相关文章

大数据量下的数据库查询与插入如何优化? (整理)

数据库经常要做一些查询与插入,但是如果查询和插入的数据量过大的时候就会引发数据库性能问题,降低数据库工作效率.因此性能调优是大家在工作中都能够预见的问题,大到世界五百强的核心系统,小到超市的库存系统,几乎都会有要调优的时候.面对形形色色的系统,林林总总的需求,调优的手段也是丰富多彩. 1.尽量使语句符合查询优化器的规则避免全表扫描而使用索引查询 2.避免频繁创建和删除临时表,以减少系统表资源的消耗. 3.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理. 4.建立高效的索引

poi3 8大数据导出-poi3.8大数据量Excel导出连续查询导出不同的报表后导出速度非常慢

问题描述 poi3.8大数据量Excel导出连续查询导出不同的报表后导出速度非常慢 poi3.8用((SXSSFSheet)sheet).flushRows()方法解决了大数据量的excel导出,但是我在使用过程中,由于每个单元格都要设置不同的颜色和数据格式,发现导出第一张报表时速度还勉强可以接受,但是继续导出另一张报表,速度就慢的跟蜗牛似的,要10分钟甚至3个小时,请问有什么方法可以解决? 代码如下: private static void fillExcel(KDTable kdtRepor

.Net中EF针对大数据量查询超时的一种优化

旧代码: --receiptIds   id集合,每次查1000左右 var mappingList = new List<FinanceSettlementMapping>(); mappingList.AddRange(SettlementMappingRepository.Entities.Include(o => o.ReceiptsTo).Include(d => d.FinanceSettlement).Where(d => receiptIds.Contains

导出大数据量excel,用POI

问题描述 导出大数据量excel,用POI 需要导出的数据量可能非常大(超过10W条),而且要照顾到没装07Excel的机器,不能用SXSSFworkbook.鉴于一个sheet页最多65000多条记录,那么大数据就需要多个sheet页.由于导出前要先查数据库,是应该一次查出所有数据然后导出还是分次查询?每次查询65000条数据? 解决方案 这么大的文件,excel 2003未必能打开.建议分页存入多个excel文件. 解决方案二: 看速度和效率了,分次是不是速度还快点

大数据量下的分页

分页|数据 对于非常大的数据模型而言,分页检索时,每次都加载整个数据源非常浪费.通常的选择是检索页面大小的块区的数据,而非检索所有的数据,然后单步执行当前行. 本文演示ASP.net的DataGrid和Sql Server 实现大数据量下的分页,为了便于实现演示,数据表采用了Northwind数据库的Orders表(830条记录). 如果数据表中有唯一的自增索引,并且这个字段没有出现断号现象.检索页面大小的块区数据就非常简单了.通过简单的Sql语句就可以实现这个功能:select * from

ASP.NET 2.0数据教程之二十五:大数据量时提高分页的效率

返回"ASP.NET 2.0数据教程目录" 如我们在之前的教程里讨论的那样,分页可以通过两种方法来实现: 默 认分页– 你仅仅只用选中data Web control的智能标签的Enable Paging ; 然而,当你浏览页面的时候,虽然你看到的只是一小部分数据,ObjectDataSource 还是会每次都读取所有数据 自定义分页– 通过只从数据库读取用户 需要浏览的那部分数据,提高了性能.显然这种方法需要你做更多的工作. 默认的分页功能非常吸引人,因为你只需要选中一个checkb

MySQL大数据量时提高分页效率

我的这段代码是大数据量时提高分页的效率的测试代码 --提高分页效率:实现分页时只读取显示数据,需要先在数据库创建数据库"TestForPaging" use TestForPaging go --创建表SomeData create table SomeData ( id int primary key, name varchar(30) null, description text ) go --插入数据 insert into SomeData values(1,'num1','第

Mysql大数据量存储及访问的设计讨论

一.引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题.通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式.水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失.通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性:通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题:通过读写分离策略更

数据库-sqlserver大数据量用like

问题描述 sqlserver大数据量用like 现在我有一个数据库表,数据量大概是300W,还在不停的添加,其中有一个查询需要用到模糊查询, 如果用select Cs_Id,Cs_Content from Customer_Service where Cs_Content like '%关键字%'的话效率很低,而且如果同时查询的人多会影响整个数据库的性能,我也想过用全文索引,但是全文索引的分词效果很差,有时候需要查询的数据查询不出来,有没有什么好的优化方法?感激不尽 解决方案 自己先分词(比如说