实现百万数据量毫秒级查询的存储结构
来源:互联网 发布:linux yum ant 编辑:程序博客网 时间:2024/05/16 16:12
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--分页存储过程 CREATE PROCEDURE [dbo].[sp_Paging7] ( @Tables nvarchar(1000), --表名/视图名@pageindex int = 1, --当前页码@PageSize int = 10, --每页记录数@Filter1 nvarchar(1000) = NULL, --where过滤条件(不带where)@Filter2 nvarchar(1000) = NULL, --where过滤条件(不带where)@Filter3 nvarchar(1000) = NULL, --where过滤条件(不带where)@time nvarchar(100) =N'time', --时间@Sort nvarchar(200) = NULL, --排序字段(不带order by)@Group nvarchar(1000) = NULL , --Group语句(不带Group By)@Fields nvarchar(1000) = N'*' --输出字段--@TotalCount int OUTPUT --总记录数) AS DECLARE @SortTable nvarchar(100) DECLARE @SortName nvarchar(100) DECLARE @strSortColumn nvarchar(200) DECLARE @operator char(2) DECLARE @type nvarchar(100) DECLARE @prec int --设定排序语句IF @Sort IS NULL OR @Sort = '' SET @Sort = @time IF CHARINDEX('DESC',@Sort)>0 BEGIN SET @strSortColumn = REPLACE(@Sort, 'DESC', '') SET @operator = '<=' END ELSE BEGIN SET @strSortColumn = REPLACE(@Sort, 'ASC', '') SET @operator = '>=' END IF CHARINDEX('.', @strSortColumn) > 0 BEGIN SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn)) SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn)) END ELSE BEGIN SET @SortTable = @Tables SET @SortName = @strSortColumn END --设置排序字段类型和精度SELECT @type=t.name, @prec=c.prec FROM sysobjects o JOIN syscolumns c on o.id=c.id JOIN systypes t on c.xusertype=t.xusertype WHERE o.name = @SortTable AND c.name = @SortName IF CHARINDEX('char', @type) > 0 SET @type = @type + '(' + CAST(@prec AS varchar) + ')' DECLARE @strPageSize nvarchar(50) DECLARE @strStartRow nvarchar(50) DECLARE @strFilter nvarchar(1000) DECLARE @strSimpleFilter nvarchar(1000) DECLARE @strGroup nvarchar(1000) IF @pageindex <1 SET @pageindex = 1 SET @strPageSize = CAST(@PageSize AS nvarchar(50)) --设置开始分页记录数SET @strStartRow = CAST(((@pageindex - 1)*@PageSize + 1) AS nvarchar(50)) --筛选以及分组语句IF @Filter3 IS NOT NULL AND @Filter3 != '' BEGIN SET @strFilter = ' WHERE ' + @Filter1 + ' ' + ' AND ' + @Filter2 + ' AND ' + @Filter3 SET @strSimpleFilter = ' AND ' + @Filter1 + ' ' + ' AND ' + @Filter2 + ' AND ' + @Filter3END ELSE BEGIN SET @strFilter = ' WHERE ' + @Filter1 + ' ' + ' AND ' + @Filter2 SET @strSimpleFilter = ' AND ' + @Filter1 + ' ' + ' AND ' + @Filter2 END IF @Group IS NOT NULL AND @Group != '' SET @strGroup = ' GROUP BY ' --计算总记录数--DECLARE @TotalCountSql nvarchar(1000)--SET @TotalCountSql=N'SELECT @TotalCount=COUNT(*)' +N' FROM ' + @Tables + @strFilter--EXEC sp_executesql @TotalCountSql,N'@TotalCount int OUTPUT',@TotalCount OUTPUT--执行查询语句 EXEC('DECLARE @SortColumn ' + @type + 'SET ROWCOUNT ' + @strStartRow + 'SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + 'SET ROWCOUNT ' + @strPageSize + 'SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '')
在网上查了资料,根据项目进行了修改,实现快速查询。
0 0
- 实现百万数据量毫秒级查询的存储结构
- 毫秒级百万数据分页存储过程
- 毫秒级百万数据分页存储过程
- 毫秒级百万数据分页存储过程[转载]
- 毫秒级百万数据分页存储过程[欢迎转载]
- 毫秒级百万数据分页存储过程[供学习用]
- 毫秒级百万数据分页存储过程[欢迎转载]
- mysql在百万数据量下查询慢的问题
- SQL Server 索引结构及其使用(三)--实现小数据量和海量数据的通用分页显示存储过程
- SQL Server百万级大数据量删除
- Silverlight大数据量查询实现
- 基于大数据量的缓存查询实现方案
- verilog实现的毫秒级计时器
- 互联网百万级应用的大数据处理问题 探讨大数据量处理
- Mysql模糊查询like效率,以及更高效的写法 在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时
- 顺序存储结构的基本操作实现(以类的方式实现)----插入、删除、查询
- 树形结构的数据库实现,存储过程实现添加删除查询功能
- 分页控件之分页算法 —— for SQL Server 版。百万级的数据只需要15毫秒到900毫秒
- iOS 之 协议(protocol)的学习
- Linux kernel compile--linux-3.18.8编译过程
- F.NET框架示例(六)、数据库操作 之 删除
- 易宝Java版在线支付
- 随便多少人你都能管
- 实现百万数据量毫秒级查询的存储结构
- javaEE--web.xml拆分
- STL中正确使用ERASE()方法遍历删除元素
- 字符,字节和编码
- 写在第一次离职
- TI-AM1808_LINUX开发笔记
- 敏感词库 包含中英文
- Android_相对布局(中)第一季重制版
- 读取RcFile文件