建表:
create table tb_test(fval varchar(50));
----------------------------------------------
插入測試資料:
delimiter $$
create definer=`root`@`localhost` procedure `p_teset`()
begin
declare v_val varchar(20);
declare v_str varchar(20);
declare v_i int ;
declare v_j int;
set v_str ='abcdefghijklmnopqrstuvwxyz';
set v_i=0;
set v_j=0;
while v_i<600000 do
set v_val ='';
while v_j< 13 do
set v_val= concat(v_val,substring(v_str,1,floor(1+rand()*26)));
set v_j=v_j+1;
end while;
set v_j=0;
insert into tb_test(fval)
values(v_val);
set v_i =v_i+1;
end while;
end$$
delimiter ;
----------------------------------------------
測試like:
select *
from tb_test
where fval like '%ab';
70231條 用時0.531s
select *
from tb_test
where fval like 'ab%'
961406條用時1.422s
---------------------------------------------
加索引:
alter table tb_test add index my_index(fval);
---------------------------------------------
再測試:
select *
from tb_test
where fval like '%ab';
70231條 用時1.094s
select *
from tb_test
where fval like 'ab%'
961406條用時1.485s
表為myisam格式。
為什麼加了索引卻慢了?
select *from tb_test
where fval like '%ab';
70231條 用時0.531s
select *
from tb_test
where fval like 'ab%'
961406條用時1.422s
select * 本身輸出也需要時間,第二個查詢的結果是 961406 條,而第乙個是70231條. 需要考慮這麼多記錄本身的輸出顯示到螢幕上所需要時間。
可以測試
select count(*) from tb_test where fval like '%ab';
select count(*) from tb_test where fval like 'ab%'
建表:create table tb_test(fval varchar(50));
----------------------------------------------
插入測試資料:
delimiter $$
create definer=`root`@`localhost` procedure `p_teset`()
begin
declare v_val v……
幾個知識點:
1:like '%ab',這樣萬用字元在左邊的,mysql是不會用到索引的,mysql使用索引用的是最左字首的方式。
2:like 'ab%',這樣可能用到索引,你需要在查詢語句前面加explain關鍵字看看是否用到了索引。
3:檢查乙個sql的效率是否變化了,需要排除出query_cache,在查詢時這樣寫
select sql_no_cache * from ... where ...這樣就不會從query_cache取資料了。多執行幾次取平均值比較靠譜。
mysql 聯表查詢 100w 資料優化
閒來無事,使用vue封裝了個table元件,封裝完成後想測試下,資料量小的情況下,能迅速展現資料,資料上了100w後,直接超時,結果一步步排查,發現是sql查詢的問題 使用表 訂單表 order 100w 商品表goods 使用者表 user 未優化前sql查詢語句 select o.order i...
SQL查詢效率 100w資料查詢只要1秒
sql查詢效率 100w資料查詢只要1秒 關於sql查詢效率,100w資料,查詢只要1秒,與您分享 機器情況 p4 2.4 記憶體 1 g os windows 2003 資料庫 ms sql server 2000 目的 查詢效能測試,比較兩種查詢的效能 sql查詢效率 step by step ...
SQL查詢效率 100w資料查詢只要1秒
機器情況 p4 2.4 記憶體 1 g os windows 2003 資料庫 ms sql server 2000 目的 查詢效能測試,比較兩種查詢的效能 sql查詢效率 step by step setp 1.建表 create table t userinfo userid intidenti...