首页 > 解决方案 > 关系数据库列类型性能

问题描述

就个人而言,我支持可维护性。所以我的很多系统设计决策都是基于此。

设计:一个

例如,我一直这样设计我的数据库:-
*表示索引列

|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会对性能产生不可忽略的影响?

标签: mysqlsql

解决方案


推荐阅读