如何为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 asWITH (INDEX(index_name))
is not valid MySQL
@MannersW 谢谢。它适用于 MySQL 中的现有表吗?
@sharath3599201 他回答中的第二个查询在 MySQL 中不起作用,因为接缝是 SQL Server (MSSQL) 语法
USE INDEX (index_name)
强制 MySQL 使用索引通常是个坏主意..
抱歉,我没有注意到是 MySQL,我已经更新了我对 MySQL 的答案。你可以试一试。以上是关于如何为mysql中的现有表创建索引?的主要内容,如果未能解决你的问题,请参考以下文章