sql 的一个查询问题

问题描述

一个大数据量的操作信息表 就叫TAB_A吧 里面记录着人员的操作记录,人员每进行一次业务操作都会在该表中插入一条记录,包括人员的唯一id与时间,还有其他信息。我想查询出所有人员的最后一次操作的记录集,sql应该怎么写?我是这么写的,首先,先按人员id分组,查出max(time)与id,然后再拿结果去关联本身的表,但是发现查询的结果非常慢,有没有人遇到过,怎么写能让查询结果快一些,我用的是oracle数据库,可以使用oracle自带的一些功能函数,但是能用原生sql解决最好,非常感谢

解决方案

select *from (select t.*,row_number() over(partition by t.id order by t.time desc) "row" from TAB_A t) ttwhere "row" <= 1;
解决方案二:
select * from t_sjlc t1, (select t.rybh,max(t.cjsj) as etime from t_sjlc t group by t.rybh) t2where t1.rybh=t2.rybh and t1.cjsj=t2.etime试着写了下,t_sjlc表里有87000条数据,按这个查出来400条花费了0.328s.不知道这个效率高不高啊
解决方案三:
最快的当然是建两张表,一张存放历史数据,一张存放最后一次,

时间: 2024-07-28 12:59:23

sql 的一个查询问题的相关文章

sql中select查询的一个简单问题

问题描述 sql中select查询的一个简单问题 表A结构如下: 设备编号 预检日期 A01 2014-1-2 A02 2014-6-7 A01 2015-3-2 A02 2015-9-1 怎样写SQL语句会得到下面的结果集,注意,得到3列,表中原来两列 设备编号 2014预检日期 2015预检日期 A01 2014-1-2 2015-3-2 A02 2014-6-7 2015-9-1 各位大侠,困扰我一下午了.... 解决方案 这是SQL Server的写法. SELECT ISNULL(a1

sql server-sqlserver2005+jsp 组成一个查询系统

问题描述 sqlserver2005+jsp 组成一个查询系统 sql表中有很多很多数据,想要查询并用表格的形式来显示出结果 已经连接上了数据库,可以执行查询语句,就是不知道该用什么方式把整个语句查询语句结果传递到显示结果的页面并且以表格的形式展现出来 String all="select sum(iNumb) as iNumbHj,sum (rMoney) as rMoneyHj from [Data_ShopDailyBill_View] group by sShopCode";

求SQL高手帮忙看看一个查询问题

问题描述 求SQL高手帮忙看看一个查询问题 10C 现在有两个实体表表1 销售表 货号 时间 数量 A1 2016/5/10 2 A1 2016/5/9 3 A1 2016/5/8 3 表2 收货表 货号 时间 数量 A1 2016/5/7 1 A1 2016/5/6 4 A1 2016/5/5 1 现在需要查询成如下结果 查询结果表 货号 时间 销售数量 收货数量 A1 2016/5/10 2 1 A1 2016/5/9 3 3 A1 2016/5/8 3 2 查询结果的前3列就是[销售表],

数据库是sql server,现有两张表,用lambda表达式做一个查询

问题描述 数据库是sql server,现有两张表,用lambda表达式做一个查询 表t1有7个字段,包括id,code:表t2有5个字段,包括id: 现在要查询:t2上id与t1上的id相同且code为3的t1上的所有字段. 解决方案 var query = from x in t1 join y in t2 on x.id equals y.id where x.code == 3 select new { x, y };

select-oracle sql的一个sum()查询问题

问题描述 oracle sql的一个sum()查询问题 这两个我需要把他们合并起来的效果最左边那列是部门然后是当日ymcl然后是本月的ymcl合计 dname ymcl sumymcl(从一号到今日的sum) 部门1 11 363 部门2 12 321 部门3 13 514 SELECT d.name as dnameinfo2.ymcl( SELECT sum(info.ymcl) FROM day_out_info info LEFT JOIN day_out_record re ON re

《Oracle SQL疑难解析》——1.12 查询的WHERE子句基于另一个查询的结果

1.12 查询的WHERE子句基于另一个查询的结果 Oracle SQL疑难解析 1.12.1 要解决的问题 我们要从某张表中查询数据,但查询条件依赖当时另一张表中的数据情况,所以不能直接把条件固定到语句中.具体地说,我们现在要做一个报告,把所有办公场所在北美的部门列出来. 1.12.2 解决方法 在HR SCHEMA中,DEPARTMENT表中有部门的信息,LOCATIONS表中有办公场所的信息: select department_name from hr.departments where

第1周 SQL Server 如何执行一个查询

原文:第1周 SQL Server 如何执行一个查询         大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要,因为接下来的培训中我们会以这些概念来加深我们对SQL Server的认识. 当我们执行一个查询时,在SQL Server中最重要的组件有哪些,下面这张图片可以给大家一个概观的认识.         可以看到,SQL Server内

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第2部分)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第2部分) 计划缓存(Plan Cache) 如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的. 如果没找到被缓存的计划,然后命令分析器(Command Parser)在T-SQL基础上生成一个查询树(query tree).查询树(query tree)的内部结构是通过树上的每个结点代表查询中需要的执行操作