繁体   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