获取当前和上一次记录 获取当前和上一次记录 up up up 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select 旅客姓名,日期,当前交通工具, (select max(当前交通工具)keep(dense_rank last order by 当前日期) from 表t where 旅客姓名=x.旅客姓名 and 当前日期<x.当前日期)上次交通工具from 表t x建旅客姓名、当前日期、当前交通工具 组合索引 这个方向应该是对的。对于大数据量的查询应该尽量避免使用min,max等分组函数和排序的,因为效率差。而旅客又不是每天都出行,所以只是通过sql的优化是无法避免对于过去记录的max或者排序的。建议楼主使用触发器做成一张记录表。专门记录旅客最后一次出行使用交通工具的信息。这样在查询的时候就可以方便的取出最后一次的出行信息。这时候应该可以用到唯一的索引,大大提高检索效率。但是这里有一个前提就是对于同一个旅客的数据在进入数据库的时候,日期必须是最新的。也就是说数据库里面已经存在20140602的数据的时候,是不可以插入20140508的数据的,不知道能不能在业务上面保证这种数据的不出现。 用lag()over() 或者是lead()over() 看你的排序时间怎么弄的 关于ORACLE的查询语句 数据库题目 急急 求:oracle 如何实现两数据库间的迁移 关于数据采集的PL/SQL 求oracel数据导出功能。 这句存储过程语句那里出错了? 存储过程问题??? NOARCHIVELOG Mode下要online redo logs有什莫作用? 利用触发器做dml操作日志 关于import的问题 关于view的困惑 oracle大表关联怎样优化
(select max(当前交通工具)keep(dense_rank last order by 当前日期) from 表t where 旅客姓名=x.旅客姓名
and 当前日期<x.当前日期)上次交通工具
from 表t x建旅客姓名、当前日期、当前交通工具 组合索引
这个方向应该是对的。
对于大数据量的查询应该尽量避免使用min,max等分组函数和排序的,因为效率差。
而旅客又不是每天都出行,所以只是通过sql的优化是无法避免对于过去记录的max或者排序的。建议楼主使用触发器做成一张记录表。
专门记录旅客最后一次出行使用交通工具的信息。
这样在查询的时候就可以方便的取出最后一次的出行信息。
这时候应该可以用到唯一的索引,大大提高检索效率。但是这里有一个前提就是对于同一个旅客的数据在进入数据库的时候,日期必须是最新的。
也就是说数据库里面已经存在20140602的数据的时候,是不可以插入20140508的数据的,不知道能不能在业务上面保证这种数据的不出现。