【问题标题】:Keep table data, after SELECT保留表数据,在 SELECT 之后
【发布时间】:2013-11-25 21:39:49
【问题描述】:

所以我经常使用以下查询

SELECT [id]
      ,[date]
      ,[pcknum]
      ,[pcktype]
      ,[pckinfo]
      ,[pckuptime]
      ,[pckbyte]
      ,[pcktext]
  FROM [dbo].[RawLog]
  where pcktext like '%USER SC%' and pckinfo = 174 and not (pcktext like '%type=Dial%' or pcktext like '%type=VoicemailCollect%')
  order by date desc

问题是,该表包含超过10个mio行,搜索槽大约需要20-40分钟,并且消耗大量时间。

该表只能通过直接用户输入访问,因为它用于对 som 网络协议进行逆向工程。

我想知道,是否有办法使 SQL 查询的保存状态减少搜索时间?

例如查询的保存状态

SELECT [id]
      ,[date]
      ,[pcknum]
      ,[pcktype]
      ,[pckinfo]
      ,[pckuptime]
      ,[pckbyte]
      ,[pcktext]
  FROM [dbo].[RawLog]
  where pcktext like '%USER SC%' and pckinfo = 174

我以后可以使用查询吗?

例如

SELECT [id]
      ,[date]
      ,[pcknum]
      ,[pcktype]
      ,[pckinfo]
      ,[pckuptime]
      ,[pckbyte]
      ,[pcktext]
  FROM table_savedstate_of_RawLog_USERSC
  where not (pcktext like '%type=Dial%' or pcktext like '%type=VoicemailCollect%')
  order by date desc

【问题讨论】:

    标签: tsql sql-server-2012 ssms


    【解决方案1】:

    您可以为此使用临时表

    SELECT [id]
          ,[date]
          ,[pcknum]
          ,[pcktype]
          ,[pckinfo]
          ,[pckuptime]
          ,[pckbyte]
          ,[pcktext]
      into #temptable
      FROM [dbo].[RawLog]
      where pcktext like '%USER SC%' and pckinfo = 174 and not (pcktext like '%type=Dial%' and pcktext like '%type=VoicemailCollect%')
      order by date desc
    

    通过这个你可以访问#temptable中已经查询到的详细信息

    例如

    Select * from #temptable where id = 1
    

    您还可以索引您的 temptable,以便在使用时更好地搜索

    CREATE NONCLUSTERED INDEX IDX_ID ON #temptable(id)  
    

    希望这会有所帮助:)

    **编辑

    根据上面的查询使用临时表

    SELECT [id]
          ,[date]
          ,[pcknum]
          ,[pcktype]
          ,[pckinfo]
          ,[pckuptime]
          ,[pckbyte]
          ,[pcktext]
      FROM #temptable
      where not (pcktext like '%type=Dial%' or pcktext like '%type=VoicemailCollect%')
      order by date desc
    

    【讨论】:

    • 谢谢,这正是我所需要的,它为我节省了大量的 CPU 时间 :)
    • @Droa 不要忘记将其标记为帮助其他人的答案,请务必将您的#temptable 编入索引以加快搜索速度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多