zoukankan      html  css  js  c++  java
  • SqlServer数据库优化之索引、临时表

    问题:工作是查询一张500万多条数据的表时,查询总是很慢,于是进行优化。

    --查询表所有索引

      use RYTreasureDB

      EXEC Sp_helpindex [RecordDrawScore]


    --
    这张表没有主键,也没有索引 SELECT * FROM RecordDrawScore WHERE UserID IN (1,2,3,4,5);

    1.添加索引

    添加索引后,SELECT时不会对整个表一行一行去遍历,只对UserID字段进行筛选。

    CREATE INDEX RecordDrawScore_userID ON [RecordDrawScore](UserID);

    由于我需要对表进行多次查询,所以第二步建临时表,减少对数据表的操作。

    2.建立临时表

    --添加(NOLOCK) 后查询表不会锁表
    SELECT userid INTO #Temp FROM [RecordDrawScore](NOLOCK) re 
    --给临时表添加索引
    CREATE INDEX Temp_userID ON #Temp(UserID);
    --当临时表用完后要删除它,删除表和UserID都会同时删除索引
    IF object_id('tempdb..#ScoreTemp') is not null 
    BEGIN DROP TABLE #ScoreTemp; END

    添加完后,效率提升了很多。

    合理的建立索引会大大提高效率,反正也会大大降低效率。

    转载请标明出处,谢谢!

  • 相关阅读:
    HDU 逃离迷宫 (bfs)
    HDU 2588 GCD (欧拉函数)
    HDU 诡异的楼梯 (bfs)
    oj 二叉树相关
    AVL树代码实现
    用栈实现队列
    redis学习
    15. 三数之和 (思维)
    889. 根据前序和后序遍历构造二叉树(非递归)
    寻找重复的子树(dfs)
  • 原文地址:https://www.cnblogs.com/nnnnnn/p/10948205.html
Copyright © 2011-2022 走看看