我有一個名爲tags_table的表,其中id列爲INT(11)
類型,標記列爲VARCHAR(200)
。優化查詢78,000,000行表(MySQL)
有〜3,000,000個獨特的ID和〜300,000個獨特的標籤。 由於每個ID有多個標籤,因此存在〜78,000,000個行,這使查詢非常緩慢。查詢的一個例子是SELECT id FROM tags_table WHERE tag = "flower"
如果我創建了一個唯一標記表並修改了tags_table以包含這些標記字符串的索引而不是字符串本身,我的查詢會更快執行嗎?如果是這樣,我該怎麼做?我的目標是儘量減少查詢時間。
這裏的表的創建語句:
CREATE TABLE `tags_table` ( `id` int(11) unsigned NOT NULL, `tag` varchar(200) CHARACTER SET utf8 NOT NULL, UNIQUE KEY `no_dup_tags` (`id`,`tag`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
你忘記了重要的事實 - 索引。你有什麼? –
你可以發佈你的表的結構 –
@juergend我有一個使id標籤對獨一無二,但是這都是 –