私のテーブル: big_table
+-----+--------------+------+-----+--- ------+----------------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +-----+--------------+------+-----+--- ------+----------------+ | | ID | mediumint(7) | いいえ | PRI | ヌル | auto_increment | | | タイトル | varchar(255) | いいえ | | | ヌル | | | | | カテゴリ ID | tinyint(2) | いいえ | | | ヌル | | | | | sub_category_id | tinyint(2) | いいえ | | | ヌル | | | | | 幅 | smallint(5) | いいえ | | | ヌル | | | | | 高さ | smallint(5) | いいえ | | | ヌル | | | | | 比率_幅 | smallint(5) | いいえ | | | ヌル | | | | | 比率_高さ | smallint(5) | いいえ | | | ヌル | | | | | サイズ | int(8) | いいえ | | | ヌル | | | | | マイム | tinyint(2) | いいえ | | | ヌル | | | | | ビュー | mediumint(7) | いいえ | マル | ヌル | | | | | 時間 | int(10) | いいえ | | | ヌル | | | | | ファイル | varchar(255) | いいえ | | | ヌル | | | +-----+--------------+------+-----+--- ------+----------------+
小さいテーブル
+--------+--------------+------+-----+---------+-- ------+ | | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ | +--------+--------------+------+-----+---------+-- ------+ | | ID | mediumint(7) | いいえ | PRI | ヌル | | | | | 幅 | smallint(5) | いいえ | マル | ヌル | | | | | 高さ | smallint(5) | いいえ | マル | ヌル | | | +--------+--------------+------+-----+---------+-- ------+
何が速いか(例):
SELECT * FROM `big_table` WHERE `width` =1920 AND `height`=1080;
または結合を使用
select big_table.*
from small_table
left join small_table small_table2
ON (small_table.id=small_table2.id
and `small_table`.`height` = '1080')
left join big_table
ON (big_table.id=small_table.id)
where small_table.width = '1920';
または同じテーブルから結合しますか?
select big_table.*
from big_table as big_table1
left join big_table big_table2
ON (big_table1.id=big_table2.id and `big_table1`.`height` = '1080')
left join big_table
ON (big_table.id=big_table1.id)
where big_table1.width = '1920';
または、より良い解決策、より良い選択がありますか?(両方のテーブルでインデックス (幅と高さ) を使用できますが、ID のみが一意です)