【问题标题】:Adding the same (separate) index to all tables in a schema向模式中的所有表添加相同的(单独的)索引
【发布时间】:2021-09-08 09:29:30
【问题描述】:

我有一个用于每天归档数据集的架构。一些分析需要回顾,所以为了优化我需要在每个表上创建几个索引。这些将是单独的(我不是试图交叉索引或任何东西)只是一个简单的非唯一索引,而是在架构中的每个表上。

存档已经建立了一年多,所以我们有大约 400 到 500 个表,对每个表进行手动 ALTER 查询有点太耗时了。

我可以编写一个 php 脚本来执行此操作,但想知道是否有更优雅的解决方案,只需一个查询或事务?

TIA

【问题讨论】:

  • 每个表都需要单独的语句,并且 DDL 语句不是事务的一部分,因此问题的两个部分的答案都是否定的。您也可以在 sql 中生成 alter table 语句。
  • 谢谢影子,所以类似于code ALTER 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吗?

标签: mysql indexing


【解决方案1】:

我在上面的 cmets 中复制了@Shadow 的答案,以将其显示为答案:

好吧,alter table 和 add index 部分将是字符串常量,因为您必须生成 alter table 语句,然后执行您在第一步中生成的 alter table 语句。在此处查看示例:stackoverflow.com/a/44527818/5389997

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多