2つのテーブル:1の選択のために、より速く、なぜあるべきMYSQLではどのテーブルが高速ですか?
CREATE TABLE `htmlcode_1` (
`global_id` int(11) NOT NULL,
`site_id` int(11) NOT NULL,
PRIMARY KEY (`global_id`),
KEY `k_site` (`site_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `htmlcode_2` (
`global_id` int(11) NOT NULL,
`site_id` int(11) NOT NULL,
PRIMARY KEY (`site_id`,`global_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?
'select * from table where site_id=%s'
あなたの2つのテーブルは異なるエンティティを表しています。 'global_id'があなたの実際のプライマリキー(これはおそらく一意です)ならば、この一意性をもはや強制しないので、別のpkを選択しないでください。そのようにプライマリキーを選択しないでください。この状況では、追加の索引が同じ結果(その照会の速度)を持ちます。スピードだけに関して、ビルはあなたに答えを与えました。 – Solarflare
@Solarflare - MySQLでは、 'PRIMARY KEY'は定義上、' UNIQUE'です。それについての「おそらくユニーク」はありません。 –
@RickJames私は、 'global_id'はおそらくそれが何であるかによって本質的に一意でなければならない値です(そうでなければ最初のテーブルは不可能です)。 evgが '(site_id、global_id)'をpkとして使用して、そのクエリを速くしようとすると、この属性は失われます。 – Solarflare