朋友们, mysql 中这样做的作用是什么?谢谢

273 天前
 way2create
接手了一个奇葩要求的新项目,说已有数据库结构的,要在此基础上去重新开发跟扩展,发现了这么一个表,建了 3 个看起来一样的索引,虽然我很难理解,但鉴于我 mysql 的知识水平有限,所以慎重起见来此劳烦大家解惑一下这样做的意义是什么?是有我考虑外的特殊作用吗?

CREATE TABLE `abc` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`type` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v0` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v1` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v2` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v3` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v4` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`v5` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_a_abc` (`type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) USING BTREE,
UNIQUE INDEX `idx_b_abc` (`type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) USING BTREE,
UNIQUE INDEX `idx_c` (`type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DYNAMIC
;
2933 次点击
所在节点    MySQL
14 条回复
sadfQED2
273 天前
别瞎猜了,建表的时候手滑多按了几下而已
sadfQED2
273 天前
最后那个顺序不一样是有用的,顺序完全一样就没啥意义了
opengps
273 天前
如果有特殊作用,哪似乎只剩下一个解释:就是分别给三个场景使用,每个场景里独立使用自己的强制索引,便于针对性调优
opengps
273 天前
正常来讲,这种几乎全文级别的索引不应当被建立。所以不用花太多精力研究这部分了,很可能是卢浮宫里保洁忘带了的拖把,去观赏很浪费精力
Vegetable
273 天前
这波啊,是手动负优化,为性能优化预留空间。
msaionyc
273 天前
没有意义,直接删掉吧,平白无故浪费存储空间
xiangyuecn
273 天前
黑纸白字写着:屎山别动
CEBBCAT
273 天前
唔,某种分库分表?
8355
273 天前
这个写库速度会变慢吧。。。
bugmakerxs
273 天前
作用就是后续优化
chendl111
273 天前
说不定是不同的 sql 用了不同的索引?否则就是毫无意义,要是顺序不一样还可以解释一下
luzemin
273 天前
说明项目组曾今来过三个老弟,每人创建了一个
IDAEngine
273 天前
手抖了,轻松完成了代码 KPI
winglight2016
273 天前
@Vegetable #5 真相了,我们做过实验,同一个索引建立两次会导致查询变慢很多——跟没建索引一样,走全表扫描

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/965006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX