我在Innodb有一张超过1亿行的表。
我必须知道外键是否超过5000行= 1。
我不需要确切的数字。
我做了一些测试:
SELECT COUNT(*) FROM table WHERE fk = 1 => 16秒
SELECT COUNT(*) FROM table WHERE fk = 1 LIMIT 5000 => 16秒
SELECT primary FROM table WHERE fk = 1 => 0.6秒
我将拥有更大的网络和治疗时间,但它可以超载15.4秒!
你有更好的主意吗?
由于
编辑:[添加了OP的相关评论]
我尝试了SELECT SQL_NO_CACHE COUNT(fk)FROM表WHERE fk = 1但是耗时25秒
使用Mysql Tuner为Innodb调整了Mysql。
CREATE TABLE table ( pk bigint(20) NOT NULL AUTO_INCREMENT,
fk tinyint(3) unsigned DEFAULT '0',
PRIMARY KEY (pk), KEY idx_fk (fk) USING BTREE )
ENGINE=InnoDB AUTO_INCREMENT=100380914 DEFAULT CHARSET=latin1
DB Stuff:
'have_innodb', 'YES' 'ignore_builtin_innodb', 'OFF' 'innodb_adaptive_