【问题标题】:What's the best field type and data usage to accelerate searches?加速搜索的最佳字段类型和数据使用是什么?
【发布时间】:2011-04-12 14:22:45
【问题描述】:

我对可能出现在不同字段中的等效搜索结果有疑问。

假设我用 3 个字段记录了记录的逻辑删除状态,例如:

  • 布尔值已删除
  • 日期删除日期
  • 字符串删除用户名

查询的目的是避免在我的选择中删除记录。 所以我可以搜索只有 2 个值(真/假)的第一个字段,或者在删除日期:很多不同的值,或者在用户名上,不同的值但不是很多。

关于索引使用情况,什么会给出最佳搜索结果时间?

【问题讨论】:

  • 您使用的是什么 DBMS。有哪些索引可用?您是在问要创建哪些索引?从更新数据到查询的比例是多少?

标签: database performance search indexing


【解决方案1】:

如果你正在做:

SELECT * FROM table WHERE 'deleted' = 0

(以那种格式)那么它将是最快的:其他人不会搜索更快或更慢,但是,与比较字符串/日期相比,比较布尔值所需的开销更少。 (通常,不同系统的方面会发生变化,一些 Bool 存储为 8 位,并且未针对相等性测试进行优化)

【讨论】:

    【解决方案2】:

    您打算执行哪些查询?像这样的:

    SELECT * FROM mytable WHERE `deleted`=0
    

    SELECT * FROM mytable WHERE `deleted_date` IS NULL
    

    如果 deleteddeleted_date 被编入索引,它们应该大致相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2010-10-20
      • 2012-01-19
      • 2018-06-30
      • 2011-07-03
      • 2012-09-18
      相关资源
      最近更新 更多