当我尝试使用以下查询更新我的种子表(我的torrent网站允许仅共享开源内容)时
UPDATE `torrents` SET `leech` = '0', `seed` = '1' WHERE `id` = '26784'
更新仅包含20,000条记录的表大约需要0.5秒。我的其他查询在少于0.0478秒(SELECT查询)
中执行CREATE TABLE IF NOT EXISTS `torrents` (
`id` int(11) NOT NULL,
`hash_info` varchar(255) NOT NULL,
`category_slug` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`size` bigint(20) NOT NULL,
`age` int(11) NOT NULL,
`description` text NOT NULL,
`trackers` longtext NOT NULL,
`magnet` longtext,
`files` longtext,
`parent_category` int(11) NOT NULL,
`category` int(11) NOT NULL,
`publish_date` int(11) DEFAULT NULL,
`uploader` int(11) NOT NULL,
`seed` int(11) DEFAULT '0',
`leech` int(11) DEFAULT '0',
`file_key` varchar(255) DEFAULT NULL,
`comments_count` int(11) DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=26816 DEFAULT CHARSET=latin1;
任何解决方案?
答案 0 :(得分:0)
基于索引列的查找比非索引列上的查找快得多。随着数据量的增加,这种情况可能会更加明显。
在Id列上创建索引,并检查它是否有助于提高查询性能。
答案 1 :(得分:0)
id
被声明为整数。所以,首先你的比较应该是一个不是字符串的整数:
UPDATE `torrents`
SET `leech` = '0', `seed` = '1'
WHERE `id` = 26784;
其次,你需要一个关于id的索引。您可以通过以下方式创建一个:
create index idx_torrents_id on torrents(id);
或者,将其作为表格中的主键。