簡體   English   中英

我如何優化他的SQL查詢

[英]How can I optimize his sql query

問題是我們有一個名為[TblLogEntry]的表。 每個日志數據都將寫入此表中。 查詢需要太多時間才能執行(6秒)。

第二個問題是,該表屬於第三方軟件。 我們創建了一個自己的Web界面以將數據上傳/傳輸到該軟件(該軟件沒有自己的Web界面)。 我正在嘗試查找文件(不是真正的文件,但是如果從查詢中獲得結果,那么我知道該文件已成功傳輸),在特定時間范圍內,文本為“成功”。 我有帶通配符的LIKE表達式,您有想法重寫嗎?

我正在嘗試檢查文件是否成功上傳。 我只有這張桌子要檢查。

編輯:在表達式之間更改為此> =和<改進了執行。 現在需要5秒^^

SELECT
[Text]
,[Date_Changed]
FROM [RM_ARCHIV].[dbo].[TblLogEntry]
where Date_Changed **>=** '2019-12-07 14:24:00' Date_Changed **<=** '2019-12-07 14:25:00'
AND [Text] like '%fdnpst-121422_mongo_Test_B_C001_S001.tif%'
AND [Text] like '%success%'; 

索引:

EXEC sp_helpindex '[RM_ARCHIV].[dbo].[TblLogEntry]' GO

結果: 索引

如果查詢為True,則只需要一個結果集,

謝謝大家! 我必須找到另一個表來檢查查詢。

對於此查詢:

SELECT [Text], [Date_Changed]
FROM [RM_ARCHIV].[dbo].[TblLogEntry]
WHERE Date_Changed BETWEEN '2019-12-07 14:24:00' AND '2019-12-07 14:25:00' AND
      [Text] like '%fdnpst-121422_mongo_Test_B_C001_S001.tif%' AND
      [Text] like '%success%'; 

您想要在(Date_Changed, Text)上建立索引。 這是查詢的覆蓋索引。 這意味着索引可以滿足查詢,而無需引用原始數據頁。

您正在從大約61秒的數據中選擇數據,因此這應該非常快。 然后可能會發生幾件事。

如果Text真的很大(成千上萬個字符或更大),則解析它可能會很昂貴。 全文索引可能會有所幫助,但這會減慢插入速度。

如果要插入很多行(每秒幾十行或幾百行),那么即使61秒也可能是很多數據。 這可能會減慢查詢速度。

而且,如果要插入很多行,則數據庫可能只是非常忙於鎖定和插入,而為您的特定查詢保留了很少的資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM