在mysql中创建索引的不同方法?

时间:2011-09-20 22:10:27

标签: mysql indexing

如果我使用

CREATE INDEX status_index ON eligible_users (status)

CREATE INDEX status ON eligible_users (status)

同样的事情没有区别?

另外,如果我创建了很多索引,它实际上有助于查询或减慢速度吗?

2 个答案:

答案 0 :(得分:3)

你写的两个语句都做了同样的事情,唯一的区别就是索引的名称。

至于实用性,它取决于数据库的设置和使用。索引对于加速查询很有用,但它们必须在每个INSERT / UPDATE上进行维护,因此它取决于。关于这个广泛的主题,网上有很多可用的资源。

索引可以创建或中断查询。通过添加正确的索引,某些查询的执行时间可以从几分钟到几分之一秒。如果你需要改进查询,你可以随时添加EXPLAIN,看看MySQL的执行计划是什么:它将显示查询使用的索引(如果有的话)并帮助你解决一些瓶颈问题。

如上所述,索引很有用但不是免费的。它必须保持最新,因此每次在索引字段中插入或修改数据时,索引也必须更新。 通常,在您有大量读取和(相对)少量写入的情况下,索引会有很多帮助。但是,不必要的索引会降低性能而不是改进性能。

答案 1 :(得分:0)

在表col的列tbl上创建单列索引的简短语法是:

CREATE INDEX [index_name] ON tbl (col)

MySQL Manual中提供了完整的详细信息。