distinct和group by的效率比較


-- 創建一個測試表

create table tp_content(
id int not null,
title char(32) not null,
addtime date not null default '2000-01-01'
) engine = myisam default charset = utf8;

-- 修改sql語句的結束符
delimiter $
-- 創建一個存儲過程,插入100萬條測試數據
CREATE PROCEDURE load_data()
begin
declare i int default 0;
while i < 1000000
do
insert into tp_content values (i,replace(uuid(), '-', ''),adddate('2000-01-01',(rand(i)*36520) mod 3652));
set i = i + 1;
end while;
end
$

call load_data();
-- 修改回原來的結束符
delimiter ;

1、沒有建立主鍵的對比

-- 運行distinct的sql語句

 

-- 運行group by的sql語句

2、建立主鍵的對比

-- 建立id主鍵
alter table tp_content add primary key(id);

distinct

 

group by

 

結論:

上面的例子可以看出:沒有建立主鍵時,distinct查詢的速度要比group by快一點(distinct的時間是30.934s,group by的時間是33.905s),而建立主鍵后group by和distinct的效率都提高了,但是兩者的速度依然差不多(distinct的時間是2.753s,group by的時間是2.762s)。

由於個人電腦的性能比較差,查出的時間比較久,所以這里的時間只是相對時間,假如用更好性能的電腦做實驗,時間會快,但是我想結論應該是差不多的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM