MySQL - 按数字或字母查询?

标签 mysql

我需要将值设置为“是或否”列名称STATUS。我正在考虑两种方法。

方法1(使用字母):设置值Y/N,然后通过查询在字段STATUS中查找具有值Y的所有行像:

SELECT * FROM post WHERE status="Y"

方法2(使用数字):设置值1/0,然后通过查询查找字段STATUS中值为1的所有行像:

SELECT * FROM post WHERE status=1

我应该使用方法1还是方法2?哪一个更快?哪个更好?

最佳答案

两者本质上是等价的,因此这成为一个更适合您的应用程序的问题。

如果您关心空间,那么一个字符的最小空间是 char(1),使用 8 位。对于数字,您可以使用位或集合类型来打包多个标志。但是,只有当您有很多标志时,这才会产生影响。

将其存储为数字的方法有一点优势,您可以通过执行以下操作来计算"is"值:

select sum(status)

(当然,在 MySQL 中,这只是对 sum(status = 'Y') 的微小改进。

如果您决定在将来的某个时刻包含“也许”或其他值,则“将其存储为字母”方法具有轻微的优势。

最后,以不同方式表示这些值的性能差异将非常非常小。您需要一个包含数百万行的表才能开始注意到问题。因此,请使用最适合您的应用程序的机制和表示值的方式。

关于MySQL - 按数字或字母查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22733898/

相关文章:

php - 为什么 mysql_fetch_field 会在此查询中耗尽内存?

mysql - 为什么 Laravel 5.7 中 DB::raw 变量从字符串修改为整数

android - 如何在 Sqlite for Android studio 中为用户 id 实现主键或唯一键

php - C & MySql 或 PHP & MySql 哪个更快?

mysql - Magento 触发查询

mysql - 如何在给定 ID 的匹配表中选择彼此匹配的用户

php - mysql什么会更快

php - 将csv文件导入MYSQL的最快方法

Python数据库创建-MySQL错误

php - swift/MySQL/PHP 'Required Parameters Missing' 错误