【发布时间】:2021-09-08 09:29:30
【问题描述】:
我有一个用于每天归档数据集的架构。一些分析需要回顾,所以为了优化我需要在每个表上创建几个索引。这些将是单独的(我不是试图交叉索引或任何东西)只是一个简单的非唯一索引,而是在架构中的每个表上。
存档已经建立了一年多,所以我们有大约 400 到 500 个表,对每个表进行手动 ALTER 查询有点太耗时了。
我可以编写一个 php 脚本来执行此操作,但想知道是否有更优雅的解决方案,只需一个查询或事务?
TIA
【问题讨论】:
-
每个表都需要单独的语句,并且 DDL 语句不是事务的一部分,因此问题的两个部分的答案都是否定的。您也可以在 sql 中生成 alter table 语句。
-
谢谢影子,所以类似于
codeALTER TABLE SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = foo ADD INDEX bar (col_name)code? -
好吧,alter table 和 add index 部分将是字符串常量,因为您必须生成 alter table 语句,然后执行您在第一步中生成的 alter table 语句。在此处查看示例:stackoverflow.com/a/44527818/5389997
-
啊!是的,现在我得到了你!整洁的!谢谢!
-
具有相同架构的多个表通常是禁忌。你考虑过
PARTITIONing吗?