【发布时间】:2022-01-22 16:10:32
【问题描述】:
我在一个 MYSQL 数据库上运行一个大的SELECT,其数量级为 100.000 行。
我正在获取的表有一个名为 type 的列,它有 4 个不同的字符串值。
|Id|Type |MetaKey|MetaValue|
|===========================|
|01|'line'|'AKey' |AValue |
|02|'line'|'AKey1'|AValue |
|03|'Ship'|'AKey2'|AValue |
|04|'Fee' |'AKey3'|AValue |
|05|'Ship'|'AKey4'|AValue |
目前主要的瓶颈似乎是网络传输,所以我想最好将这 4 个不同的字符串值转换为一个 int enum(或一些小东西),以便为传输节省内存。
我猜想 MYSQL CASE 将允许在 SQL 中执行此操作。
EF 核心可以做到这一点吗? LINQ 语法是什么样的?
重申一下 - 我希望在数据库中完成转换,而不是在 C# 客户端中。
编辑:抱歉 - 我很困惑,这是一个 MYSQL 数据库而不是 MSSQL 数据库。
【问题讨论】:
-
为什么不首先有一个 int 列?
-
@Fildor 好问题 - 但这不是我的数据库,我只是从中提取数据。我对数据库的外观没有发言权。
-
EF 核心具有称为“价值转换”的功能。它在客户端进行转换,但它会是一个非常方便的解决方案。
-
@GertArnold 是的,我想这么多。不过,这主要是关于性能。
-
@sommmen 性能不受价值转换的影响。无论如何,您都需要将该字符串解析为枚举
标签: c# mysql entity-framework-core ef-core-6.0