ID をプライマリとする大きなテーブルがあります。約 300 万行あり、指定された ID リストに基づいて小さな行セットを抽出する必要があります。
現在、私はどこでそれをやっていますが、5〜10秒のように非常に遅いです。
私のコード:
select id,fa,fb,fc
from db1.t1
where id in(15,213,156,321566,13,165,416,132163,6514361,... );
一度に 1 つの ID を照会しようとしましたが、それでも遅いです。お気に入り
select id,fa,fb,fc from db1.t1 where id =25;
また、一時テーブルを使用して ID リストを挿入し、Join を呼び出してみました。でも改善なし。
select id,fa,fb,fc from db1.t1 inner join db1.temp on t1.id=temp.id
速くする方法はありますか?
ここにテーブルがあります。
CREATE TABLE `db1`.`t1` (
`id` int(9) NOT NULL,
`url` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`title` varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL,
`lastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`lastModified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
わかりました、ここで選択について説明します。
id=1,
select_type='SIMPLE',
table='t1',
type='range',
possible_keys='PRIMARY',
key='PRIMARY',
key_len= '4',
ref= '',
rows=9,
extra='Using where'