有没有办法自动生成需要索引的列列表?

Posted

技术标签:

【中文标题】有没有办法自动生成需要索引的列列表?【英文标题】:Is there a way to automatically generate a list of columns that need indexing? 【发布时间】:2010-10-01 02:44:19 【问题描述】:

ORM 的美丽让我睡着了。我有一个缺少数据库索引的现有 Django 应用程序。

我在想也许一些中间件会记录 WHERE 子句中涉及哪些列?但是 mysql 中是否有内置的东西可能会有所帮助?

【问题讨论】:

【参考方案1】:

是的,有。

如果你看一下slow query log,有一个选项--log-queries-not-using-indexes

【讨论】:

太糟糕了,没有关于更通用解决方案的帖子,比如提到的中间件。 上述中间件将仅显示作为索引候选的列,而慢查询日志将向您显示实际建议(由于特定于 MySQL 的服务器优化,可能会有所不同)。【参考方案2】:

没有。

为所有“慢”查询添加索引也会减慢插入、更新和删除的速度。

索引是快速查询和快速更改之间的平衡。没有一般的或“正确”的答案。肯定没有什么可以自动执行此操作。

您必须在添加和更改索引时衡量整个应用程序的改进。

【讨论】:

在我的情况下,就像在许多 Web 应用程序中一样,它的读取量很大 - 写入仅限于管理员,并且表大小相当小。在这种情况下,您是否同意为查找中使用的所有列添加索引是有益的? @andybak:Willy-Nilly 索引是一个糟糕的计划。一些索引似乎是个好主意,但必须真正受益。两条规则:(1)一次改变一件事; (2) 前后测量。永远不要枪毙一堆变化和希望。

以上是关于有没有办法自动生成需要索引的列列表?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法生成项目列表的所有唯一排列

Sharepoint Online 列表中“自动编号”列-Auto Number Column

有没有办法通过放大 GraphQL 转换 @searchable 注释来控制自动生成的弹性搜索索引?

使用 sqldeveloper 为多个索引生成 SQL

有没有办法自动生成 bundledDependencies 列表?

利用SQL索引提高查询速度