SQL Server:慢查询,很多喜欢

时间:2016-04-18 10:47:25

标签: sql-server

我正在努力实施"广泛搜索"功能,应该用于搜索数据库中的所有字段。

以下查询的参数全部为"%horse%",我的本地数据库在大约15秒内执行此操作。

当我使用参数"%[^ A-Za-z0-9]马[^ A-Za-z0-9]%"时,制作"马"一个独立的词。查询需要30 +秒。

db包含3000个对象。可以优化查询以在相当长的时间内运行吗?或者我应该考虑像全文索引?

1 个答案:

答案 0 :(得分:1)

  1. 使用DISTINCT表示您可能存在有缺陷的数据模型。
  2. 检查NULL似乎是多余的。
  3. 为所有列值添加空间是一个可怕的想法,这会降低您的查询速度,因为它不是sargable
  4. 在WHERE子句中尝试使用此语法(对于所有列)

    (tblCollection.CollectionID like '%[^A-Za-z0-9]horse[^A-Za-z0-9]%' escape '\' or
    tblCollection.CollectionID like 'horse[^A-Za-z0-9]%' escape '\' or
    tblCollection.CollectionID like '[^A-Za-z0-9]horse' escape '\')