sql排序分页 如果有新数据插入

问题描述

sql排序分页 如果有新数据插入

sql排序分页 如果有新数据插入并且排序在前面,那取第二页的时候就会有重复数据,而且新插入的数据展示不出来了,怎么解决呢?

各位可能没理解我意思:
比如说现在数据库里面几千万数据,还是实时插入的数据,我想排序后分页取,比如说第一次通过代码给数据库传参取第一页,取100条,

1、这个过程数据库是把所有数据几千万条全部load到内存中排序,然后进行分页,然后取出前100条吗?

2、那第二次,还会再load所有数据一次重新排一次序,再取出101-200之间的吗?
这样岂不是很费内存,效率低下。

3、如果实时有新的数据插入,比如说应该排在前100条,而第二次去取得时候,那第一次的最后一条数据岂不是又在第二页中又取一次。

解决方案

数据量很大,一次全部加载是不可能的。考虑两种极端情况,第一种新插入的数据在所有排序中为第一条数据,这种情况可以插入数据后重新加载前100,刷新一次局部页面。第二种情况是新插入的数据在所有排序中为最后一条,这种情况直接插入就好了,页面无需重新加载数据。对于是否应该重新加载页面,只需要将新插入的数据和已经加载进来的数据中的最后一条进行比较就可以,所执行的操作并不多。

解决方案二:

先插入再排序不可以吗

解决方案三:

如果对实时性要求不是很高,可以在sql中按创建时间排序再分页获取数据,利用ajax的特效滚动刷新

解决方案四:

使用倒序排列,分页时,把数据写入session

解决方案五:

load出几千万数据,你的服务一定会挂。分页的话可以在数据库中排好序了,根据传入分页参数,取出相应的0-100条或者101-200条

解决方案六:

分页主要目的就是避免一次全部加载,降低执行效率。
你可以查查 每次只加载一页 这样 才是真正的使用分页

时间: 2024-12-24 21:06:06

sql排序分页 如果有新数据插入的相关文章

sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入

FROM http://www.cnblogs.com/geovindu/archive/2009/07/03/1516159.html 1/**//********************************************************** 2测试数据 sql server 2000 一个表的数据插入到三个相关联表中,一条一条的插入 3---涂聚文 缔友计算机信息技术有限公司 软件工程师 geovindu@163.com www.dupcit.com 4---捷为工作室

SQL 2005使用OUTPUT子句捕获数据插入时的标识值

在insert语句或者delete语句执行后,SQL Server只返回受影响的记录行的总数,如果我们想知道到底所插入/所删除的记录的具体信息的话,这就有点复杂了.在SQL Server 2005之前的版本中,如果希望从已插入和已删除的虚拟表中捕获数据,我们只能通过触发器来实现.在SQL Server 2005中,我们可以利用OUTPUT子句来实现这个功能.我们可以在insert ... SELECT语句使用OUTPUT子句,捕获所有插入的标识值.以前这需要某种类型的循环或暂时改变目标表才能实现

sql使用触发器当一张表插入数据就往另一张表插入数据

问题描述 sql使用触发器当一张表插入数据就往另一张表插入数据 日期格式是这样的但是使用触发器当上图插入了一条数据就往下图插入相同的数据,如下图为什么日期格式不一样呢? 解决方案 SQL(二) 将一张表数据插入另外一张表从表中插入数据到另外一张表oracle 将一张表的数据插入到另一张表 解决方案二: 日期格式的问题,先确保两张表对应列的数字类型一致,插入使用convert格式化一下:CONVERT(varchar(10), GETDATE(), 111).

我在C#后台中获取了数据库表中我需要的字段的值(是以string的类型取出来的),然后我已经将这些值进行了操作,得到了新的数据(string类型)将得到的新数据

问题描述 我在C#后台中获取了数据库表中我需要的字段的值(是以string的类型取出来的),然后我已经将这些值进行了操作,得到了新的数据(string类型)将得到的新数据插入到数据库中怎么做(要用存储过程做),求大神指教,最好能给我点代码参考. 解决方案 解决方案二:...数据库基础insert和update解决方案三:不就是普通的插入更新操作吗,msdn上都有示例代码解决方案四:参考实例:intid=0;//使用存储过程实现添加数据//proc_AddUser为存储过程名称using(SqlC

pl sql-急求oracle数据库插入新数据如何实时反馈给邮箱?急!急!急!

问题描述 急求oracle数据库插入新数据如何实时反馈给邮箱?急!急!急! 服务器上oracle数据库已经部署, 当oracle数据库中有新数据插入时,能够以邮件的形式反馈给某指定邮箱, 邮件内容要显示插入的数据内容(包括文件和新增的数据项)和插入时间. 注:此操作不用其他语言编写,直接用oracle PL/SQL编写此操作代码,需要此操作完整代码. 比较急,望大家能集思广益,给小弟提出宝贵意见,谢谢~~~ 解决方案 http://www.educity.cn/wenda/414505.html

SQL:把表A的一列数据插入到表B的一列中去怎么写呢?

问题描述 假设有表A:IDK102154545287873323....表B:IDK101K1031521null25454null38787null......我现在想把表A中K102字段中的所有数据插入到表B中的K103字段中,这个SQL语句应该怎么写啊?本人初学,不懂,请教!多谢 解决方案 解决方案二:写个循环吧一条条插UP解决方案三:INSERTINTOb(K103)SELECTK102FROMa我是这么写的SQL,但执行后到新行中去了,并不是我想要的那种啊,闷啊解决方案四:update

android中怎么把新增加的数据插入到adapter前面。

问题描述 android中怎么把新增加的数据插入到adapter前面. 我现在只会用..list.add(data) → adapter.notifyDataSetChanged()...把数据放在adapter的后面.. 解决方案 adapter里你肯定有传入一个数据放置载体(比方说List<>啊,String[]啊什么的),你只要把新的数据插入到那个载体的第一个,然后notify...一下就行了. 解决方案二: 因为adpater只是用来展示数据的,假设你的数据为List<>

读取一个txt档,然后将数据插入sql server,执行的时候报内存溢出,有时候提示连接已关闭

问题描述 用的是批插的方式sqlBC.WriteToServer(dt);之前数据量不是太大,三四十万笔,速度还行,三四十秒现在数据量变得很大,txt档150M左右,数据近100W,//事务处理插入数据库中publicvoidExesql(){//调用方法TxtFileToStr()stringstr=TxtFileToStr();string[]sql=str.Split(',');//得到string数组intnum=sql.Length-1;一次事务处理直接内存溢出,请问如何分批处理呢?求

JS实现table表格数据排序功能(可支持动态数据+分页效果)_javascript技巧

asp.net会经常遇到分页的效果,尤其是希望实现静态的html分页排序(html分页相信大家都已经有自己的解决方案.在这里就不多说).我写了一个简单的Demo排序. 数据就是字母和数字两组.(汉字需要找到asc码) 原理就是利用数组自带的sort排序,进行表格重组.已在.net mvc 中测试过.支持分页.(申明一点.只对当前页面数据排序 无刷新,对所有页面排序的话,肯定需要刷新.这点我还在解决中.)希望有新想法的高手们,给下指点. 下面把html的代码贴出来: <!DOCTYPE HTML