app常量“type”列在性能上有什么不同吗?

wlsrxk51  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(420)

在我的例子中,我有一个表,其中存储了一组具有类似信息但每个都具有唯一类型列的记录,这些记录用于我的应用程序的各个部分。我知道,我知道这是“微优化”,但它是我的应用程序的一个组成部分(它将存储许多记录),我想它被优化,我也只是好奇,是更快地使用文本类型和选择它喜欢
选择。。。其中type='some\u type'或使用php定义的常量,如const sometype=1;运行查询('选择。。。其中type='.sometype)?

ggazkfy8

ggazkfy81#

在任何查询中花费的主要时间是获取要处理的行。函数,字符串与int,等等,在性能上只有细微的差别。关注代码中哪些是干净的,以及哪些可以最小化所接触的行数。
完成此操作后,请尽量减少到服务器的往返次数。即便如此,我还是创建了许多网页,可以执行20-50个查询(每个都经过了很好的优化);页面性能足够。
你也可以考虑 ENUM 数据类型。

sex ENUM('unk', 'male', 'female') NOT NULL

给你 WHERE sex = 'male' ,在封面下实现为1字节整数。

xoefb8l8

xoefb8l82#

字符串比较总是比整数比较慢。通常,所做的是将字符串存储在单独的表中,可能称为 standard_types 或者任何对存储的“常量”有意义的东西。然后,该表有一个唯一的id字段,可以被其他表引用。
这样,如果您需要用于报告的字符串,则报告查询可以连接到用于显示字符串的“types”表。理想情况下,在我看来,id值应该反映一个标准的数字,可以在客户机代码中表示为枚举值或常量;这使非报告查询对“types”表的依赖最小化。
有些人可能会反对在数据库和一个或多个应用程序代码库中保持标准id值列表及其含义的协调;但另一种方法是跨所有这些领域协调标准字符串(可以以完全不同的方式处理这些字符串值的域)。

相关问题