![]() | 1 VeryZero 2023-01-14 13:32:24 +08:00 加索引时要锁表的呀,谁敢自动加。 生产环境连手动加都很谨慎,别说自动了 |
![]() | 2 makelove 2023-01-14 15:27:38 +08:00 这东西靠 AI 来加的话也太不可控了,毕竟索引副作用挺大的要根据业务权衡 |
![]() | 3 opengps 2023-01-14 15:41:12 +08:00 只有一个地方有,就是你建表不加索引时候会给你自动加一个默认的。别的场景,都是无法“智能化自动完成”,记录分支只代表过去,最近使用的查询相关逻辑,在内存里的已经做了一层缓存了 |
![]() | 4 wolfie 2023-01-14 15:49:20 +08:00 光 SQL 执行记录咋分析啊。 比如 租户字段. |
![]() | 5 hhjswf 2023-01-14 16:22:03 +08:00 via Android 索引要牺牲插入删除的性能,原则是尽可能少,自动加引擎没那么聪明 |
6 fanyingmao OP @VeryZero #1 我指的不是在生产环境自动加,先在测试环境用 sql 找到可以优化的索引,生成加索引语句。在停服维护时,再加索引,这样开发只要关心业务,不要关心索引。 |
7 fanyingmao OP |
8 MeteorCat 2023-01-14 19:23:28 +08:00 via Android |
9 512357301 2023-01-14 22:14:22 +08:00 via Android 用列式存储吧,全表自动索引 |
![]() | 10 IvanLi127 2023-01-14 22:48:29 +08:00 设计时不设计好,事后加还不愿意,还想要自动的。。。有点过分啊 既然想自动加,那为啥不直接一开始就全部加上? |
11 em70 2023-01-14 22:59:25 +08:00 既然这么简单,你做一个输入 SQL,自动产生索引建议的工具不就行了,看有没有人愿意付费 |
12 icy37785 2023-01-15 00:00:54 +08:00 via iPhone 既然觉得索引就算加错了,也不怎么影响性能,那其实可以把索引全加上。 |
13 nothingistrue 2023-01-15 11:30:30 +08:00 @fanyingmao #6 先暂停讨论索引跟业务的关系,来比较一下常规加索引和你想要的加索引方法的区别。 常规加索引方式步骤:推测可能有的 SQL ,加索引。该方式: 只需启动数据库; 实际效果可控; 可以根据实际结果实时调整索引; SQL 太垃圾导致加索引都不行的时候直接回头调整 SQL 即可。 AI 自动加索引方式步骤:启动应用服务,全部功能跑一遍,AI 引擎扫描 SQL 执行记录,加索引。该方式: 需要启动所有服务; 需要提前跑掉全部功能;实际效果取决于 AI 引擎的智商但至少目前还没有智商超过人类的 AI ; SQL 太垃圾导致加索引都不行的时候,除了要回头调整 SQL 外所有步骤都要重新做一遍。 然后接着讨论索引跟业务的关系,一句话:数据库的所有物理模型,经逻辑模型、概要模型决定链之后,最终是由业务决定的。 别找 AI 加索引了,花钱雇个人给你加索引,更具备可行性。 |
14 fanyingmao OP |
15 vitoliu 2023-01-15 12:12:43 +08:00 via iPhone 6,7 年前开始生产环境就不单靠 MySQL 了(B 类除外),你说的自动加索引,实际上就是研发加了一层高效的查询中间件。 |
16 fanyingmao OP @nothingistrue #13 “需要提前跑掉全部功能”,我想只要跑下所有查询的语句就可以了,只要业务测试出 sql 语句给工具测试就可以了,用不上 ai 。 |