假设我有“Win”、“Lose”、“Incomplete”、“Forfeit”等文本。我可以直接将文本存储在数据库中。相反,如果使用诸如 0 = Win、1 = Lose 等数字,我会在数据库性能方面获得实质性改进吗?特别是在字段是我的 WHERE 子句的一部分的查询上
最佳答案
在 CPU 级别,比较两个固定大小的整数只需要一条指令,而比较可变长度的字符串通常需要遍历每个字符。因此,对于非常大的数据集,使用整数应该会显着提高性能。
此外,固定大小的整数通常会占用更少的空间,并允许数据库引擎执行基于随机搜索的更快算法。
然而,大多数数据库系统都有一个 enum
类型,它适用于像您这样的情况 - 在查询中,您可以将字段值与一组固定的文字进行比较,同时它在内部存储为整数。
关于sql - 存储为数字而不是文本对数据库性能有何改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098546/