1.创建表:
//此处使用了覆盖索引
CREATE TABLE IF NOT EXISTS `Ben` (
`aa` int(10) unsigned NOT NULL AUTO_INCREMENT,
`bb` int(10) unsigned NOT NULL,
`cc` varchar(100) NOT NULL,
PRIMARY KEY (`aa`),
KEY `bar` (`bb`,`aa`)
) ENGINE=MyISAM;
//无覆盖索引
DROP TABLE IF EXISTS `ben`;
CREATE TABLE IF NOT EXISTS `ben` (
`aa` int(10) unsigned NOT NULL AUTO_INCREMENT,
`bb` int(10) unsigned NOT NULL,
`cc` varchar(100) NOT NULL,
PRIMARY KEY (`aa`),
KEY `bar` (`bb`)
) ENGINE=MyISAM;
2.插入100万条数据:
//插入数据
function insertData(){
//数据表中插入100万条数据
$ben = new Model();
for($i = 0; $i < 1000000 ; $i++){
$a = $i % 2 == 0 ? 1 : 0;
$sql="insert into ben values (null,".$a.",'".md5($i)."')";
$aa = $ben->query($sql);
}
}
3.读取数据,测试程序执行时间:
function read01(){
$start = microtime(true);
$ben = new Model();

本文对比了在不同场景下,MySQL的SQL_CALC_FOUND_ROWS和COUNT(*)在性能上的差异。在有覆盖索引的情况下,SQL_CALC_FOUND_ROWS表现更优;而无覆盖索引时,COUNT(*)更快。同时,文章提到了InnoDB引擎相比于MyISAM在某些操作上的性能劣势,以及选择MyISAM的原因,包括读性能、索引和数据分离带来的优势,以及在特定业务场景下的适用性。
最低0.47元/天 解锁文章
635

被折叠的 条评论
为什么被折叠?



