通过创建表关系,我会看到性能提升吗?

时间:2015-07-14 15:25:29

标签: mysql performance

我理解使用表关系来创建约束的好处,例如当一行中的行与另一个表中的行相关时,阻止从中删除行。

但是这样做会在运行联接查询时提高性能。

EG。假设我有InnoDB表USER和USERINFO,如下所示:

    USER
   |Field   |Type        |Null  |Key    |Default          |Extra
 --|id      |int(11)     |NO    |PRI    |                 |auto_increment
|  |email   |varchar(700)|NO    |       |                 |
|  |password|varchar(255)|NO    |       |                 |
|  |active  |varchar(1)  |NO    |       |n                |
|  |created |timestamp   |NO    |       |CURRENT_TIMESTAMP|
|
|   USERINFO
|  |Field   |Type        |Null  |Key    |Default          |Extra
 --|user    |int(11)     |NO    |PRI    |                 |
   |name    |varchar(100)|NO    |       |                 |
   |position|varchar(100)|NO    |       |                 |
    ...

运行以下查询时,在性能方面是否有益?

SELECT * FROM USER U JOIN USERINFO UI ON U.id = UI.user

1 个答案:

答案 0 :(得分:2)

它是可能(并且很可能)提升性能的索引,而不仅仅是外键。

另外:MySQL creates foreign key indexes automatically for InnoDB