文档详情

[烽火笔试题.doc

发布:2017-01-10约1.37万字共12页下载文档
文本预览下载声明
1 如何设计数据库 答:存储信息的大小,每次扩容的大小,冗余 ?? 2 几十上百万行,如何快速查询出表数据 答:用分页存储过程 /* ??函数名称: GetRecordFromPage ??函数功能: 获取指定页的数据 ??参数说明: @tblName? ?? ?包含数据的表名 ? ?? ?? ???@fldName? ?? ?关键字段名 ? ?? ?? ???@PageSize? ???每页记录数 ? ?? ?? ???@PageIndex? ? 要获取的页码 ? ?? ?? ???@OrderType? ? 排序类型, 0 - 升序, 1 - 降序 ? ?? ?? ???@strWhere? ???查询条件 (注意: 不要加 where) */ CREATE PROCEDURE GetRecordFromPage ? ? @tblName? ?? ?varchar(255),? ?? ? -- 表名 ? ? @fldName? ?? ?varchar(255),? ?? ? -- 字段名 ? ? @PageSize? ???int = 10,? ?? ?? ???-- 页尺寸 ? ? @PageIndex? ? int = 1,? ?? ?? ?? ?-- 页码 ? ? @OrderType? ? bit = 0,? ?? ?? ?? ?-- 设置排序类型, 非 0 值则降序 ? ? @strWhere? ???varchar(2000) = ’’??-- 查询条件 (注意: 不要加 where) AS ?? declare @strSQL? ?varchar(6000)? ?? ? -- 主语句 declare @strTmp? ?varchar(1000)? ?? ? -- 临时变量 declare @strOrder varchar(500)? ?? ???-- 排序类型 ?? if @OrderType != 0 begin ? ? set @strTmp = ’(select min’ ? ? set @strOrder = ’ order by [’ + @fldName + ’] desc’ end else begin ? ? set @strTmp = ’(select max’ ? ? set @strOrder = ’ order by [’ + @fldName +’] asc’ end ?? set @strSQL = ’select top ’ + str(@PageSize) + ’ * from [’ ? ? + @tblName + ’] where [’ + @fldName + ’]’ + @strTmp + ’([’ ? ? + @fldName + ’]) from (select top ’ + str((@PageIndex-1)*@PageSize) + ’ [’ ? ? + @fldName + ’] from [’ + @tblName + ’]’ + @strOrder + ’) as tblTmp)’ ? ? + @strOrder ?? if @strWhere != ’’ ? ? set @strSQL = ’select top ’ + str(@PageSize) + ’ * from [’ ? ?? ???+ @tblName + ’] where [’ + @fldName + ’]’ + @strTmp + ’([’ ? ?? ???+ @fldName + ’]) from (select top ’ + str((@PageIndex-1)*@PageSize) + ’ [’ ? ?? ???+ @fldName + ’] from [’ + @tblName + ’] where ’ + @strWhere + ’ ’ ? ?? ???+ @strOrder + ’) as tblTmp) and ’ + @strWhere + ’ ’ + @strOrder ?? if @PageIndex = 1 begin ? ? set @strTmp = ’’ ? ? if @strWhere != ’’ ? ?? ???set @strTmp = ’ where (’ + @strWhere + ’)’ ?? ? ? set @strSQL = ’select top ’ + str(@PageSize) + ’ * from [’ ? ?? ???+ @tblName + ’]’ + @strTmp + ’ ’ + @strOrder end
显示全部
相似文档