如何为mysql中的现有表创建索引?

Posted

技术标签:

【中文标题】如何为mysql中的现有表创建索引?【英文标题】:How to create index for existing table in mysql? 【发布时间】:2019-09-05 09:07:40 【问题描述】:

我们的服务器变慢了,“从 mysql 数据库获取数据”。所以我在谷歌上搜索它。他们告诉我,“使用 INDEX 进行选择查询以从数据库中获取数据,这样执行速度会更快”。

【问题讨论】:

完全正确。感谢您提供信息。 启用 slow_log,对查询运行解释并为这些查询创建合理的索引,或者甚至可能需要查询重写。但请记住,添加索引不会强制 MySQL 将其用作优化器是基于成本的。不要只是盲目地添加索引,因为冗余索引可能会使优化器使用错误的索引和更差的性能.. 也许你可以看看这个***.com/a/29842947/11930311 我已经执行了这个查询“CREATE INDEX identifier_idx ON room_info(identifier);”在我的本地系统中,[它影响了 0 行]。但不会在其上创建任何 INDEX。 【参考方案1】:

索引是按键值排序的数据库表的小副本。

你需要先创建索引。

CREATE INDEX index_name ON table_name(column_name)   

然后:

SELECT * FROM table_name
USE INDEX (index_name)
WHERE condition;

【讨论】:

Seams like SQL Server (MSSQL) code as WITH (INDEX(index_name)) is not valid MySQL @MannersW 谢谢。它适用于 MySQL 中的现有表吗? @sharath3599201 他回答中的第二个查询在 MySQL 中不起作用,因为接缝是 SQL Server (MSSQL) 语法 USE INDEX (index_name) 强制 MySQL 使用索引通常是个坏主意.. 抱歉,我没有注意到是 MySQL,我已经更新了我对 MySQL 的答案。你可以试一试。

以上是关于如何为mysql中的现有表创建索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何为uitableview的所有行和所有部分创建索引路径?

如何为 MySQL 表添加索引?

Mysql如何为表字段添加索引?

MySQL InnoDB表创建联合唯一索引出错?

如何为 PL SQL 中的现有表创建唯一 ID?

如何为MySQL查询优化选择最佳索引