mysql - 在MySQL中,使用主键选择 SELECT

  显示原文与译文双语对照的内容
0 0

我正在尝试加速我的web应用程序中的SELECT 查询。 我做了一些非常主要的优化,比如订购PHP返回的行而不是MySQL本身。 现在我只是想知道,在主键的列上使用 SELECT 语句是否更快?

示例,我有一个与列 settingKeysettingValue 一起设置的表,我正在用于配置。 当 settingKey 是一个主索引时,获取 settingValue的内容会更快,如下所示?

SELECT settingValue FROM config WHERE settingKey="MasterPassword"

我尝试了谷歌的答案,但没有明确答案。

谢谢。

时间:原作者:5个回答

0 0

主要的关键字是:

  • 索引
  • 那是独一无二

这意味着它很好。

因此,在where子句中使用主键可能对性能有好处。


通常,建议使用作为主键和索引的"小"和"简单"的列:

  • "小"列,如"只有几个字节"中所示,意味着比较简单: 比较两个 2字节的整数比较两个 4字节整数可能比较容易。
  • "简单":比较两个字节比比较两个字节的整数更容易/更快,而不是比较排序规则。: 比较字符串通常意味着区分大小写和区分重音比较 !

比如,如果你的主键是字段,而不是 varchar,那么在你的情况下,它是更好的表现。

原作者:
0 0

我假设在 settingValue 上没有索引,部分是因为它无意义,部分因为你没有提到它。 如果假设正确,按主键查询是巨大的性能收益;它是表的最有效访问路径。

作为一个经验规则,不要在 WHERE 子句中使用未索引的列。

原作者:
0 0
SELECT settingValue FROM config WHERE settingKey=`MasterPassword`

使用 MyISAM 表,这里查询将具有 settingKeyPRIMARY KEY 或者二级索引的相同性能。

如果使用 InnoDB 表,该查询可能会更快,如果 settingKey的次要索引的话。

InnoDB 表是聚集的,这意味着表本身是 PRIMARY KEY 索引。

表的大小比辅助索引更大,因这里对表的查找比索引的查找速度慢。

原作者:
...