按整数或布尔值过滤的数据库性能?

成员之声

我将拥有一个包含数百万个条目的数据库表,例如,一个在线商店的产品。如果一个没有货,我想以某种方式标记它,并且想从任何findAll()sql提取中排除它

因此,我虽然使用以下选项之一:

  • 每个产品已经有一个整数的可用性。无论如何,我必须将其设置为0。select * from products where availcount > 0
  • 或者我可以引入一个boolean available = 'true'字段,如果缺货,则将其设置为false,然后查询将是...where available = 'true'

问题:这会有所不同吗?是否有理由应首选这些选项之一?

斯图尔特

我会坚持库存水平(int availcount)。位字段通常很难索引,除非数据中存在较大的偏斜,以致缺货的数量大约为1%或更少(并且由于您可能只搜索有库存的产品,标志上的索引将不被使用)。

由于无论如何您似乎已经存储了实际的库存水平,因此不存储available库存指示器将使您避免试图使两列保持同步。

最后,许多RDBMS允许您添加COMPUTED列(如果失败,则将available指示符添加到VIEW),这将允许您available从实际的逻辑推导指示符availcount,而没有任何存储开销。

编辑

  • 根据下面的评论,请注意,availcount(用于查询WHERE availcount = 0availcount > 0的索引与在位字段上的索引一样将不能SARG一样难以理解,尽管如果通常通过其他条件来搜索产品,则可能不需要该索引。
  • 除了派生is available in stock ?数据库外,还可以通过代码进行确定,例如,bool isAvailable() { return availcount > 0 ;}实体类上的其他方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

布尔值作为SQLite数据库中的整数

来自分类Dev

如何从数据库读取布尔值(使用游标)?

来自分类Dev

在SQLite数据库中使用布尔值

来自分类Dev

如何从数据库字段中获取布尔值?

来自分类Dev

从Firebase数据库快照解包布尔值?

来自分类Dev

布尔值未在数据库中更改

来自分类Dev

布尔值未在数据库中更改

来自分类Dev

布尔值未在数据库中更改

来自分类Dev

布尔值未在数据库中更改

来自分类Dev

布尔值未在数据库中更改

来自分类Dev

布尔值和 Firebase 数据库

来自分类Dev

按布尔值,按索引和按整数的pandas数据框

来自分类Dev

按布尔值,按索引和按整数的pandas数据框

来自分类Dev

如何查询 Firebase 数据库而不显示基于布尔值的值

来自分类Dev

在数据库中存储布尔值的最佳数据类型是什么

来自分类Dev

在MySQL / Oracle数据库中切换布尔值

来自分类Dev

如何在CakePHP中手动转义mySQL数据库插入的布尔值?

来自分类Dev

如何在MySQL数据库中存储60个布尔值?

来自分类Dev

使用文本框在数据库中插入布尔值

来自分类Dev

尝试插入SQLite数据库时可能返回布尔值?

来自分类Dev

列类型为布尔值的会议室数据库迁移问题

来自分类Dev

如何在我的SQLite数据库中插入一个布尔值?

来自分类Dev

数据库mysql_num_rows()期望参数1为资源,布尔值在

来自分类Dev

Netbeans:在数据库上添加布尔值列

来自分类Dev

如何在CakePHP中手动转义mySQL数据库插入的布尔值?

来自分类Dev

使用文本框在数据库中插入布尔值

来自分类Dev

如何从数据库中获取布尔值并将其添加到 TextView?

来自分类Dev

使用数据库中的布尔值填充 options_for_select 中的 Selected 选项

来自分类Dev

动态数据库 | 如何向现有对象添加布尔值

Related 相关文章

  1. 1

    布尔值作为SQLite数据库中的整数

  2. 2

    如何从数据库读取布尔值(使用游标)?

  3. 3

    在SQLite数据库中使用布尔值

  4. 4

    如何从数据库字段中获取布尔值?

  5. 5

    从Firebase数据库快照解包布尔值?

  6. 6

    布尔值未在数据库中更改

  7. 7

    布尔值未在数据库中更改

  8. 8

    布尔值未在数据库中更改

  9. 9

    布尔值未在数据库中更改

  10. 10

    布尔值未在数据库中更改

  11. 11

    布尔值和 Firebase 数据库

  12. 12

    按布尔值,按索引和按整数的pandas数据框

  13. 13

    按布尔值,按索引和按整数的pandas数据框

  14. 14

    如何查询 Firebase 数据库而不显示基于布尔值的值

  15. 15

    在数据库中存储布尔值的最佳数据类型是什么

  16. 16

    在MySQL / Oracle数据库中切换布尔值

  17. 17

    如何在CakePHP中手动转义mySQL数据库插入的布尔值?

  18. 18

    如何在MySQL数据库中存储60个布尔值?

  19. 19

    使用文本框在数据库中插入布尔值

  20. 20

    尝试插入SQLite数据库时可能返回布尔值?

  21. 21

    列类型为布尔值的会议室数据库迁移问题

  22. 22

    如何在我的SQLite数据库中插入一个布尔值?

  23. 23

    数据库mysql_num_rows()期望参数1为资源,布尔值在

  24. 24

    Netbeans:在数据库上添加布尔值列

  25. 25

    如何在CakePHP中手动转义mySQL数据库插入的布尔值?

  26. 26

    使用文本框在数据库中插入布尔值

  27. 27

    如何从数据库中获取布尔值并将其添加到 TextView?

  28. 28

    使用数据库中的布尔值填充 options_for_select 中的 Selected 选项

  29. 29

    动态数据库 | 如何向现有对象添加布尔值

热门标签

归档