除了简单的0或1,在MySQL表中保存记录状态的最佳方法是什么?

马克

如果我有一个充满记录的表,它们可能是付款,预订或其他实体的多种形式,是否有最佳实践来保存每条记录的状态,使其超出简单的0(不活动)和1(活动)?

例如,付款的状态可能为“待处理”,“已完成”或“失败”。我以前做过的方法是在值/文本对中有另一个带有一系列定义的表,即。0 =“失败”,1 =“待处理”和2 =“完成”。然后,我将在付款表中存储0、1或2,并在需要时使用内部联接从定义表中读取文本。

这种方法有时看起来过于复杂和不必要,并且我一直在考虑更改方法,例如直接在付款表的状态字段中直接保存“完成”一词。

这是否被视为不良做法?如果是,最佳做法是什么?

琼斯

这些似乎是事务记录,因此可能有很多记录,查询性能将成为问题。因此,以这样一种方式组织一个或多个状态列可能很聪明,即对所需记录的复合索引访问将变得简单明了。

在不知道您的查询模式的情况下,很难为您提供清晰的“执行此操作,请勿执行此操作”建议,因此这里有两种情况。

假设您需要获得本月的所有有效预订。您需要查询以下形式

 SELECT whatever
   FROM xactions
  WHERE active = 1 and type = 2 /*bookings*/
    AND xaction_date >= CURDATE() - INTERVAL DAY(CURDATE()) DAY

在上使用复合BTREE索引,效果会很好(active,type,xaction_date)通过随机访问第一个合格记录的索引,然后顺序扫描,可以满足查询要求。

但是,如果您有type = 2表示有效的预订,而type = 12表示无效的预订,并且您希望本月所有活跃和无效的预订,您的查询将如下所示:

 SELECT whatever
   FROM xactions
  WHERE type IN (2,12)
    AND xaction_date >= CURDATE() - INTERVAL DAY(CURDATE()) DAY

由于IN(2,12)子句需要不相交的值范围,因此将无法如此轻松地扫描复合索引

tl; dr在MySQL中,为各种状态项索引单独的列更容易,以获得更好的查询性能。但是,如果不了解查询模式就很难知道。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

除了简单的0或1,在MySQL表中保存记录状态的最佳方法是什么?

来自分类Dev

在Django中保存此关系的最佳方法是什么?

来自分类Dev

Tensorflow,在RNN中保存状态的最佳方法?

来自分类Dev

在pyspark中保存中间表的最佳方法

来自分类Dev

hibernate/Spring JPA 的 save 方法不会在数据库中保存记录

来自分类Dev

在Sitecore应用程序中保存用户的UI首选项的最佳方法是什么?

来自分类Dev

在PHP中保存和加载活动日志的最佳方法是什么?

来自分类Dev

在数据库中保存连接字符串的最佳方法是什么?

来自分类Dev

在 WPF 中保存和检索字符串数组的最佳方法是什么

来自分类Dev

在Rails中保存记录时抑制错误

来自分类Dev

Symfony2:从Ajax表单提交中保存记录

来自分类Dev

在驼峰中保存记录后如何获取生成的主键

来自分类Dev

如何使用数组对象在mongoDB中保存记录

来自分类Dev

在postgres数据库中保存文件树的最简单方法是什么?

来自分类Dev

在MySQL中创建表的最佳方法是什么?

来自分类Dev

使用 cron 作业更新 mysql 表的最佳方法是什么?

来自分类Dev

在Django中保存机密文件的最佳做法是什么?

来自分类Dev

在 JHipster 中保存初始数据的最佳做法是什么?

来自分类Dev

在 MYSQL 中透视表的简单方法是什么

来自分类Dev

恢复ViewController状态的最佳方法是什么

来自分类Dev

什么是使第n个记录保持最佳状态的最佳方法?

来自分类Dev

保存JNIEnv *的最佳方法是什么?

来自分类Dev

保存大量链接的最佳方法是什么?

来自分类Dev

使用C#检查SQL Server表中是否存在记录的最佳方法是什么?

来自分类Dev

查找每个外键的表的最大记录的最佳方法是什么?

来自分类Dev

使用SQL Server 2016时态表查询已删除记录的最佳方法是什么?

来自分类Dev

查找每个外键的表的最大记录的最佳方法是什么?

来自分类Dev

在MySQL数据库中保存数据的最有效方法是什么

来自分类Dev

创建1个元素集的最佳/最简单/最快的方法是什么?(C ++)

Related 相关文章

  1. 1

    除了简单的0或1,在MySQL表中保存记录状态的最佳方法是什么?

  2. 2

    在Django中保存此关系的最佳方法是什么?

  3. 3

    Tensorflow,在RNN中保存状态的最佳方法?

  4. 4

    在pyspark中保存中间表的最佳方法

  5. 5

    hibernate/Spring JPA 的 save 方法不会在数据库中保存记录

  6. 6

    在Sitecore应用程序中保存用户的UI首选项的最佳方法是什么?

  7. 7

    在PHP中保存和加载活动日志的最佳方法是什么?

  8. 8

    在数据库中保存连接字符串的最佳方法是什么?

  9. 9

    在 WPF 中保存和检索字符串数组的最佳方法是什么

  10. 10

    在Rails中保存记录时抑制错误

  11. 11

    Symfony2:从Ajax表单提交中保存记录

  12. 12

    在驼峰中保存记录后如何获取生成的主键

  13. 13

    如何使用数组对象在mongoDB中保存记录

  14. 14

    在postgres数据库中保存文件树的最简单方法是什么?

  15. 15

    在MySQL中创建表的最佳方法是什么?

  16. 16

    使用 cron 作业更新 mysql 表的最佳方法是什么?

  17. 17

    在Django中保存机密文件的最佳做法是什么?

  18. 18

    在 JHipster 中保存初始数据的最佳做法是什么?

  19. 19

    在 MYSQL 中透视表的简单方法是什么

  20. 20

    恢复ViewController状态的最佳方法是什么

  21. 21

    什么是使第n个记录保持最佳状态的最佳方法?

  22. 22

    保存JNIEnv *的最佳方法是什么?

  23. 23

    保存大量链接的最佳方法是什么?

  24. 24

    使用C#检查SQL Server表中是否存在记录的最佳方法是什么?

  25. 25

    查找每个外键的表的最大记录的最佳方法是什么?

  26. 26

    使用SQL Server 2016时态表查询已删除记录的最佳方法是什么?

  27. 27

    查找每个外键的表的最大记录的最佳方法是什么?

  28. 28

    在MySQL数据库中保存数据的最有效方法是什么

  29. 29

    创建1个元素集的最佳/最简单/最快的方法是什么?(C ++)

热门标签

归档