数据库优化
(#)----------------------------------
错误写法(这种写法效率非常差):
IF(NOT EXISTS(
SELECT * FROM MallProj WITH(NOLOCK)......
真确做法:
IF(NOT EXISTS(
SELECT top 1 id FROM MallProj WITH(NOLOCK)......
注意:如果需要查所有字段也不要用select *,正确的做法是把每个字段都写上(因为select* 一旦数据库字段有增加和删除,很容易出错)
(#)----------------------------------
先把分页逻辑往前提(对于大数据的运行,分页逻辑往前提非常重要,很多人写sql的时候都没有注意这点,尽量的在最前面分页后再进行其他关联,否则运算的是所有数据而不是当 前页的数据)
(#)----------------------------------
把客户池丢弃原因冗余到UserAndProj表,因为这个sql需要对表SellerGiveUpTable进行全表扫描,找出每条记录的最新丢弃原因,这样做非常耗性能(大家写程序的时候尽量用冗余来换取速度)
(#)----------------------------------
*select xx,xxx from tablexxx where xxx=?
order by xxx desc
offset (@currentPage-1)*@pageSize row fetch next @pageSize rows only 比
*select
ROW_NUMBER() OVER (ORDER BY a.updateTime DESC) AS num,
xx,xxx from tablexxx where xxx=?
WHERE num>=(@pageIndex - 1) * @pageSize + 1 AND num<=@pageIndex*@pageSize
效率高很多
(#)----------------------------------
set STATISTICS io ON
set STATISTICS TIME On
set STATISTICS TIME On
SELECT top 10 * FROM MallProj WITH(NOLOCK)
set STATISTICS io Off
set STATISTICS TIME Off
set STATISTICS TIME Off
(#)----------------------------------
sql查看性能的工具
sqlserver工具
点击"包括实际的执行计划"按钮,然后再查询,然后右键下方执行计划中"缺少索引详细信息"