假设数据库中有张表,表名是UserName,字段分别是ID(int),Name(nvarchar),Age(int)。 如果不带查询条件存储过程是: 代码如下: CREATE PROCEDURE [dbo].[UserName] pageIndex int, pageSize int AS declare min int; declare max int; set min=pageSize*(pageIndex-1)+1; set max=pageSize*pageIndex; with my
前言
我们知道,索引的选择是优化器阶段的工作,但是优化器并不是万能的,它有可能选错所要使用的索引。一般优化器选择索引考虑的因素有:扫描行数,是否排序,是否使用临时表。
使用explain分析sql
explain是很好的自测命令,勤于使用explain有助于我们写出更合理的sql语句以及建立更合理的索引:
mysql> explain select * from t where (a between 1 and 1000) and (b between 50000 and 10000
其实在很多时候设计的度还是要把握的,不至于让自己陷入【非要把它设计成万能的分页存储过程】的怪圈中才是最重要的,因为我们还要留出时间还解决其他的很多问题,个人认为适度就可以了,留出一定的空间。也因为万能是不存在的,万物在一定的范畴之内都是合理的,出了范畴可能就没有合理的了。
分页存储过程大致有下列几种
1、 利用Not in 和select top
2、 利用id大于多少和select top
3、 利用sql中的游标
4、临时表
可以参看网上的以下链接
C#中常用的