【问题标题】:FilterExpression - would this work?FilterExpression - 这行得通吗?
【发布时间】:2010-11-22 19:22:44
【问题描述】:

我有一个关于我计划在我的 SqlDataSource 上使用的 FilterExpression 的问题。我只想知道这是否可行,以及在某些情况下会发生什么:

(itemID like '%{0}%' OR parentID like '%{0}%') AND (source like '%{1}%' OR action like '%{1}%' OR itemID like '%{1}%' OR parentID like '%{1}%' OR item like '%{1}%' OR userid like '%{1}%' OR timestamp like '%{1}%')

可以在查询字符串中给出 {0} 参数(尽管也不能给出),而 {1} 是在文本框中输入的内容。基本上,用户可以访问一个页面,该页面列出了所有具有“itemID”或“parentID”(如查询字符串)的记录。然后,他们可以通过在文本框中输入他们想要过滤所有列的任何文本来进一步缩小范围。

基本上,它会按上述要求工作吗?如果没有,我可以以某种方式轻松更改它吗?

谢谢

【问题讨论】:

    标签: c# asp.net filter


    【解决方案1】:

    它会起作用吗?看来是这样。

    但是,这对您的数据库服务器来说将是地狱。简而言之,您将无法利用任何索引、缓存查询计划或任何其他优化提示。这将导致全表扫描。

    数据库服务器(不管是哪一个)无法优化LIKE '%{some value}%' 问题是第一个%,表示匹配列中的任何位置。当然,无论如何,所有的 OR 语句都会抛出查询计划,所以也许这并不像整个设计那么重要。

    您可以考虑在这些字段上使用全文索引。另一个想法是回过头来仔细查看需求,看看是否实施基于常规字段的搜索是否会更好,该搜索允许为条件输入不同值的多个 where 子句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2012-01-14
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多