sqlisnotnull优化
❶ SQL优化:MySQL索引失效的各种情况总结
一、对列使用函数,该列的索引将不起作用。****如:substring(字段名,1,2)='xxx';
二、对列进行运算(+,-,*,/,!等),该列的索引将不起作用。如:select*fromtestwhereid-1=9;//错误的写法;
select*fromtestwhereid=10;//正确的写法;
三、某些情况下的LIKE操作,该列的索引将不起作用。如:字段名LIKECONCAT('%','2014-08-13','%');
四、某些情况使用反向操作,该列的索引将不起作用。如:字段名<>2;
作者:程序媛妹子❷ SQL Server鏁版嵁搴撶殑楂樻ц兘浼桦寲缁忛獙镐荤粨
链鏂囦富瑕佸悜澶у朵粙缁岖殑鏄姝g‘浼桦寲SQL
Server鏁版嵁搴撶殑缁忛獙镐荤粨锛屽叾涓鍖呮嫭鍦ㄥ瑰叾杩涜屼紭鍖栫殑瀹为檯镎崭綔涓鍊煎缑澶у舵敞镒忕殑鍦版柟鎻忚堪锛屼互鍙婂笋QL璇鍙ヨ繘琛屼紭鍖栫殑链锘烘湰铡熷垯锛屼互涓嫔氨鏄鏂囩珷镄勪富瑕佸唴瀹规弿杩般
銆銆浼桦寲鏁版嵁搴撶殑娉ㄦ剰浜嬮”锛
銆銆1銆佸叧阌瀛楁靛缓绔嬬储寮曘
銆銆2銆佷娇鐢ㄥ瓨鍌ㄨ繃绋嬶纴瀹冧娇SQL鍙桦缑镟村姞𨱔垫椿鍜岄珮鏁堛
銆銆3銆佸囦唤鏁版嵁搴揿拰娓呴櫎鍨冨溇鏁版嵁銆
銆銆4銆丼QL璇鍙ヨ娉旷殑浼桦寲銆(鍙浠ョ敤Sybase镄凷QL
Expert锛屽彲𨱍沧垜娌℃垒鍒皍nexpired镄勫簭鍒楀彿)
銆銆5銆佹竻鐞嗗垹闄ゆ棩蹇椼
銆銆SQL璇鍙ヤ紭鍖栫殑锘烘湰铡熷垯锛
銆銆1銆佷娇鐢ㄧ储寮曟潵镟村揩鍦伴亶铡呜〃銆
銆銆缂虹渷𨱍呭喌涓嫔缓绔嬬殑绱㈠紩鏄闱炵兢闆嗙储寮曪纴浣嗘湁镞跺畠骞朵笉鏄链浣崇殑銆傚湪闱炵兢闆嗙储寮曚笅锛屾暟鎹鍦ㄧ墿鐞嗕笂闅忔満瀛樻斁鍦ㄦ暟鎹椤典笂銆傚悎鐞嗙殑绱㈠紩璁捐¤佸缓绔嫔湪瀵瑰悇绉嶆煡璇㈢殑鍒嗘瀽鍜岄勬祴涓娿
銆銆涓鑸𨱒ヨ达细
銆銆鈶.链夊ぇ閲忛吨澶嶅笺佷笖缁忓父链夎寖锲存煡璇(between,
>,<
锛>=,<
=)鍜宱rder
by銆乬roup
by鍙戠敓镄勫垪锛屽彲钥冭槛寤虹珛缇ら泦绱㈠紩
銆銆鈶.缁忓父钖屾椂瀛桦彇澶氩垪锛屼笖姣忓垪閮藉惈链夐吨澶嶅煎彲钥冭槛寤虹珛缁勫悎绱㈠紩;
銆銆鈶.缁勫悎绱㈠紩瑕佸敖閲忎娇鍏抽敭镆ヨ㈠舰鎴愮储寮曡嗙洊锛屽叾鍓嶅煎垪涓瀹氭槸浣跨敤链棰戠箒镄勫垪銆
銆銆2銆両S
NULL
涓
IS
NOT
NULL
銆銆涓嶈兘鐢╪ull浣灭储寮曪纴浠讳綍鍖呭惈null鍊肩殑鍒楅兘灏嗕笉浼氲鍖呭惈鍦ㄧ储寮曚腑銆傚嵆浣跨储寮曟湁澶氩垪杩欐牱镄勬儏鍐典笅锛屽彧瑕佽繖浜涘垪涓链変竴鍒楀惈链塶ull锛岃ュ垪灏变细浠庣储寮曚腑鎺挜櫎銆备篃灏辨槸璇村傛灉镆愬垪瀛桦湪绌哄硷纴鍗充娇瀵硅ュ垪寤虹储寮曚篃涓崭细鎻愰珮镐ц兘銆备换浣曞湪where瀛愬彞涓浣跨敤is
null鎴杋s
not
null镄勮鍙ヤ紭鍖栧櫒鏄涓嶅厑璁镐娇鐢ㄧ储寮旷殑銆
銆銆3銆両N鍜孍XISTS
銆銆EXISTS瑕佽繙姣擨N镄勬晥鐜囬珮銆傞噷闱㈠叧绯诲埌full
table
scan鍜宺ange
scan銆傚嚑涔庡皢镓链夌殑IN镎崭綔绗﹀瓙镆ヨ㈡敼鍐欎负浣跨敤EXISTS镄勫瓙镆ヨ銆
銆銆4銆佸湪娴烽噺镆ヨ㈡椂灏介噺灏戠敤镙煎纺杞鎹銆
銆銆5銆佸綋鍦⊿QL
SERVER
2000涓
銆銆濡傛灉瀛桦偍杩囩▼鍙链変竴涓鍙傛暟锛屽苟涓旀槸OUTPUT绫诲瀷镄勶纴蹇呴’鍦ㄨ皟鐢ㄨ繖涓瀛桦偍杩囩▼镄勬椂鍊欑粰杩欎釜鍙傛暟涓涓鍒濆嬬殑鍊硷纴钖﹀垯浼氩嚭鐜拌皟鐢ㄩ敊璇銆
銆銆6銆丱RDER
BY鍜孏ROPU
BY
銆銆浣跨敤ORDER
BY鍜孏ROUP
BY鐭璇锛屼换浣曚竴绉岖储寮曢兘链夊姪浜岙ELECT镄勬ц兘鎻愰珮銆傛敞镒忓傛灉绱㈠紩鍒楅噷闱㈡湁NULL鍊硷纴Optimizer灏嗘棤娉曚紭鍖栥
銆銆7銆佷换浣曞瑰垪镄勬搷浣滈兘灏嗗艰嚧琛ㄦ壂鎻忥纴瀹冨寘𨰾琒QL
Server鏁版嵁搴揿嚱鏁般佽$畻琛ㄨ揪寮忕瓑绛夛纴镆ヨ㈡椂瑕佸敖鍙鑳藉皢镎崭綔绉昏呖绛夊彿鍙宠竟銆
銆銆8銆両N銆丱R瀛愬彞甯镐细浣跨敤宸ヤ綔琛锛屼娇绱㈠紩澶辨晥銆傚傛灉涓崭骇鐢熷ぇ閲忛吨澶嶅硷纴鍙浠ヨ冭槛鎶婂瓙鍙ユ媶寮銆傛媶寮镄勫瓙鍙ヤ腑搴旇ュ寘钖绱㈠紩銆
銆銆9銆丼ET
SHOWPLAN_ALL>10銆佽皑鎱庝娇鐢ㄦ父镙
銆銆鍦ㄦ煇浜涘繀椤讳娇鐢ㄦ父镙囩殑鍦哄悎锛屽彲钥冭槛灏嗙﹀悎𨱒′欢镄勬暟鎹琛岃浆鍏ヤ复镞惰〃涓锛屽啀瀵逛复镞惰〃瀹氢箟娓告爣杩涜屾搷浣滐纴杩欐牱鍙浣挎ц兘寰楀埌鏄庢樉鎻愰珮銆
銆銆娉ㄩ喷锛氭墍璋撶殑浼桦寲灏辨槸WHERE瀛愬彞鍒╃敤浜嗙储寮曪纴涓嶅彲浼桦寲鍗冲彂鐢熶简琛ㄦ壂鎻忔垨棰濆栧紑阌銆傜粡楠屾樉绀猴纴SQL
Server鏁版嵁搴撴ц兘镄勬渶澶ф敼杩涘缑鐩娄簬阃昏緫镄勬暟鎹搴撹捐°佺储寮曡捐″拰镆ヨ㈣捐℃柟闱銆傚弽杩囨潵璇达纴链澶х殑镐ц兘闂棰桦父甯告槸鐢卞叾涓杩欎簺鐩稿悓鏂归溃涓镄勪笉瓒冲紩璧风殑銆
銆銆鍏跺疄SQL浼桦寲镄勫疄璐ㄥ氨鏄鍦ㄧ粨鏋沧g‘镄勫墠鎻愪笅锛岀敤浼桦寲鍣ㄥ彲浠ヨ瘑鍒镄勮鍙ワ纴鍏呬唤鍒╃敤绱㈠紩锛屽噺灏戣〃镓鎻忕殑I/O娆℃暟锛屽敖閲忛伩鍏嶈〃鎼灭储镄勫彂鐢熴傚叾瀹濻QL镄勬ц兘浼桦寲鏄涓涓澶嶆潅镄勮繃绋嬶纴涓婅堪杩欎簺鍙鏄鍦ㄥ簲鐢ㄥ眰娆$殑涓绉崭綋鐜帮纴娣卞叆镰旂┒杩树细娑夊强SQL
Server鏁版嵁搴揿眰镄勮祫婧愰厤缃銆佺绣缁滃眰镄勬祦閲忔带鍒朵互鍙婃搷浣灭郴缁熷眰镄勬讳綋璁捐°