希杜·卢卡(Schidu Luca)
我认为标题是不言自明的。假设我们有这个表:
CREATE TABLE tickets (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
priority ENUM('c', 'a', 'b') NOT NULL
);
如果将优先级ENUM中的值排序,它将获得任何性能吗?像这样:
priority ENUM('a', 'b', 'c') NOT NULL
耀斑
枚举按其索引号而不是其值排序:
ENUM值根据其索引号排序,该索引号取决于列规范中列出的枚举成员的顺序。例如,对于ENUM('b','a'),'b'在'a'之前排序。空字符串排在非空字符串之前,而NULL值排在所有其他枚举值之前。
因此实际元素值对性能没有影响,因为MySQL在处理枚举(包括对它们进行排序)时只处理数字:
您指定为输入值的字符串会自动编码为数字。有关ENUM类型的存储要求,请参见第11.7节“数据类型存储要求”。
尽管没有性能优势,但是以适当的排序顺序指定元素(不一定必须按字母顺序排列)具有的优势order by enum_column
可能不会给您带来意想不到的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句