易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 查询优化 (一)

使用聚集索引优化SQL查询
首先让我们做一个测试,现创建一个表 向表中插入不等数据
--DROP TABLE T_UserInfo--------------------------------------
CREATE
TABLE
T_UserInfo
(
Userid
varchar(20),
UserName varchar(20)
)
--
DECLARE
@I INT
DECLARE
@ENDID INT
SELECT
@I =
1
SELECT
@ENDID = 100
-- 在此处更改要插入的数据,重新插入之前要删掉所有数据
WHILE @I <=@ENDID
BEGIN
INSERT INTO T_UserInfo
SELECT 'ABCDE'+CAST(@I AS VARCHAR(20))+'EF','Fan'+CAST(@I AS VARCHAR(20))
SELECT @I = @I+1
END
--相关SQL语句解释
-------------------------------------------------------------建聚集索引
CREATE CLUSTERED INDEX INDEX_Userid  ON T_UserInfo (Userid)
--建非聚集索引
CREATE NONCLUSTERED INDEX INDEX_Userid  ON T_UserInfo (Userid)
--删除索引
DROP INDEX T_UserInfo.INDEX_Userid
我们创建 表T_UserInfo ,向T_UserInfo 添加100条数据。这时不创建索引。
然后写了一条查询语句:
SELECT * from T_UserInfo WHERE USERID='ABCDE6EF' 选中以上语句,
按Ctrl+L 
表扫描:扫描表中的行
 
 
执行:SET STATISTICS IO ON
此时再执行该SQL:SELECT * from T_UserInfo WHERE USERID='ABCDE6EF'
切换到消息栏显示如下:
    表'T_UserInfo'。扫描计数1,逻辑读1 次,物理读0 次,预读0 次。
解释下其意思:
    四个值分别为:    
         执行的扫描次数;    
       从数据缓存读取的页数;    
        从磁盘读取的页数;    
        为进行查询而放入缓存的页数
 
我们在创建一个索引
执行CREATE CLUSTERED INDEX INDEX_Userid  ON T_UserInfo (Userid)
然后再执行SELECT * from T_UserInfo WHERE USERID='ABCDE6EF'
切换到消息栏如下显示:
CTRL+ L  
表'T_UserInfo'。扫描计数1,逻辑读2 次,物理读0 次,预读0 次。
此时逻辑读由原来的1变成2, 说明我们又加了一个索引页,现在我们查询时,逻辑读就是要读两页(1索引页+1数据页),此时的效率还不如不建索引。  
那么okay, 让我们把数据填


相关文档:

SQL TRIM()函数使用方法

SQL 中的 TRIM 函数
是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:
MySQL: TRIM(), RTRIM(), LTRIM()
Oracle: RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()
各种 trim 函数的语法如下:
TRIM ([[位置] [要移除的字串] from ] 字串): [位置 ......

[Oracle]高效的SQL语句之分析函数(一)

本系列文章导航
[Oracle]高效的SQL语句之分析函数(一)--sum()
[Oracle]高效的SQL语句之分析函数(二)--max()
[Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
[Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:
......

[Oracle]高效的PL/SQL程序设计(一)

本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......

[Oracle]高效的PL/SQL程序设计(二)

本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......

[Oracle]高效的PL/SQL程序设计(五)

本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号