mysql - 关系数据库列类型性能
问题描述
就个人而言,我支持可维护性。所以我的很多系统设计决策都是基于此。
设计:一个
例如,我一直这样设计我的数据库:-
*
表示索引列
|id*|file_storage_type*|file_key|
|1 |gcs |... |
|2 |s3 |... |
|3 |oss |... |
|4 |gdrive |... |
|5 |dropbox |... |
我的代码中仍然有值映射,例如:
class FileStorageTypes
{
public static AMAZON_S3 = "s3";
public static GOOGLE_CLOUD_STORAGE = "gcs";
public static ALI_CLOUD_OSS = "oss";
public static DROP_BOX = "dropbox";
public static GOOGLE_DRIVE = "gdrive";
}
我这样使用它们:
if(resource.fileStorageType == FileStorageTypes.AMAZON_S3)
设计:乙
我所看到的,我的很多同行都这样做:-
*
表示索引列
|id*|file_storage_type*|file_key|
|1 |2 |... |
|2 |1 |... |
|3 |3 |... |
|4 |5 |... |
|5 |4 |... |
值映射如下:
class FileStorageTypes
{
public static AMAZON_S3 = 1;
public static GOOGLE_CLOUD_STORAGE = 2;
public static ALI_CLOUD_OSS = 3;
public static DROP_BOX = 4;
public static GOOGLE_DRIVE = 5;
}
代码中的用法显然是相同的。
我的想法
可维护性
我喜欢设计:A,因为它让开发人员更容易理解价值,而无需参考映射。
大小
不要关心大小,除非它极大地影响性能。
性能
这是我不确定的事情,因此这篇文章。我确信它会对性能产生负面影响,尽管可以忽略不计。
我确实有计划将列重构为tinyint
IF性能非常糟糕但到目前为止有 500k 行,我们没有遇到任何问题。
我的问题是,在什么时候Design: A
会对性能产生不可忽略的影响?
解决方案
推荐阅读
- python - 返回类变量属性时的python __getattribute__ RecursionError
- oop - 如何克隆工厂创建的对象?
- excel - 在 Power Query 编辑器中比较 2 个不同的行
- c++ - 为什么 std::string::find() 可以处理'\0'?
- arrays - 如何摆脱数组中的幻像行?
- django - 如何解决 django 中的 IntegrityError(FOREIGN KEY 约束失败)?
- .net - dotnet-dump 在 Ubuntu 中因“写入转储失败(HRESULT:0x80004005)”而失败
- swift - 如何使用coderpad和swift?
- wso2 - 如何在 WSO2IS 5.10.0 中允许 CORS 访问
- c - 事物是如何存储在内存中的