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

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

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

    转载请标明出处,谢谢!

  • 相关阅读:
    p1373
    考试总结 2018-5-6
    p1044与p1898
    p1905
    p1904 p1903
    p1177
    p1273  日常打表
    p1142
    并查集与并查集模板
    p1265
  • 原文地址:https://www.cnblogs.com/nnnnnn/p/10948205.html
Copyright © 2011-2022 走看看