目錄
7、在 where 子句中使用參數(shù),是不會導(dǎo)致全表掃描。
8、在 where 子句中對字段進(jìn)行表達(dá)式操作,是不會導(dǎo)致全表掃描。不過查詢速度會變慢,所以盡量避免使用。
9、應(yīng)盡量避免在where子句中對字段進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。
10.不要在 where 子句中的“=”左邊進(jìn)行函數(shù)、算術(shù)運(yùn)算或其他表達(dá)式運(yùn)算,否則系統(tǒng)將可能無法正確使用索引。
12.不要寫一些沒有意義的查詢,如需要生成一個(gè)空表結(jié)構(gòu):(一般開發(fā)也不會這么無聊啦,在正式的項(xiàng)目上寫這種玩意)
項(xiàng)目背景
有三張百萬級數(shù)據(jù)表
知識點(diǎn)表(ex_subject_point)9,316條數(shù)據(jù)
試題表(ex_question_junior)2,159,519條數(shù)據(jù) 有45個(gè)字段
知識點(diǎn)試題關(guān)系表(ex_question_r_knowledge)3,156,155條數(shù)據(jù)
測試數(shù)據(jù)庫為:mysql (5.7)
?
案例分析
案例分析
?
優(yōu)化方案
SELECT ex_question_junior.QUESTION_ID
FROM ex_question_junior
WHERE ex_question_junior.QUESTION_CHANNEL_TYPE =4/2;
?
?
?
案例分析
?
優(yōu)化方案
SELECT *
FROM ex_subject_point
WHERE CREATE_DT >= "2018-05-31"
AND CREATE_DT < "2018-07-01"
?
案例分析
?
?
?
?
參考:
https://mp.weixin.qq.com/s?__biz=MzIxMjg4NDU1NA==&mid=2247483684&idx=1&sn=f5abc60e696b2063e43cd9ccb40df101&chksm=97be0c01a0c98517029ff9aa280b398ab5c81fa1fcfe0e746222a3bfe75396d9eea1e249af38&mpshare=1&scene=1&srcid=0606XGHeBS4RBZloVv786wBY#rd
作者:小虛竹
歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處。
限于本人水平,如果文章和代碼有表述不當(dāng)之處,還請不吝賜教。
?
我不是個(gè)偉大的程序員,我只是個(gè)有著一些優(yōu)秀習(xí)慣的好程序員而己
?
?
?
?
?
本文摘自 :https://blog.51cto.com/u