我把SQL執行效率提高了10000000倍![ 『INNER JOIN+索引』 取代 IN 語法 ]
我把SQL執行效率提高了10000000倍![ 『INNER JOIN+索引』 取代 IN 語法 ]
課程表:[數據100條]
create table Course( c_id int PRIMARY KEY , name varchar ( 10 ) )
學生表:[數據70000條]
create table Student( id int PRIMARY KEY , name varchar ( 10 ) )
學生成績表SC[數據70w條]
CREATE table SC( sc_id int PRIMARY KEY , s_id int , c_id int , score int )
查詢目的:查找語文考100分的考生 [執行時間:30248.271s]
select s.* from Student s where s.s_id in (select s_id from SC sc where sc.c_id = 0 and sc.score = 100 )
先給sc表的c_id和score建個索引
CREATE index sc_c_id_index on SC(c_id); CREATE index sc_score_index on SC(score);
再次執行上述查詢語句,時間為: 1.054s
優化語法:
SELECT s.* FROM ( SELECT * FROM SC sc WHERE sc.c_id = 0 AND sc.score = 100 ) t INNER JOIN Student s ON t.s_id = s.s_id
3 thoughts on “我把SQL執行效率提高了10000000倍![ 『INNER JOIN+索引』 取代 IN 語法 ]”
SQL
查詢
效率
速度
加快
加速
優化
SQL
效能
效率
速度
SQL 效率/速度 提升/加快 方法