MySQL SQL語句優(yōu)化的10條建議
更新時間:2014年03月03日 15:12:24 作者:
這篇文章主要介紹了MySQL中SQL語句優(yōu)化需要注意的10點,,特別是大型高并發(fā)網(wǎng)站,需要的朋友可以參考下
1.將經(jīng)常要用到的字段(比如經(jīng)常要用這些字段來排序,或者用來做搜索),則最好將這些字段設(shè)為索引。
2.字段的種類盡可能用int 或者tinyint類型。另外字段盡可能用NOT NULL。
3.當然無可避免某些字段會用到text ,varchar等字符類型,最好將text字段的單獨出另外一個表出來(用主鍵關(guān)聯(lián)好)
4.字段的類型,以及長度,是一個很考究開發(fā)者優(yōu)化功力的一個方面。如果表數(shù)據(jù)有一定的量了,不妨用PROCEDURE ANALYSE()命令來取得字段的優(yōu)化建議!(在phpmyadmin里可以在查看表時,點擊 “Propose table structure” 來查看這些建議) 如此可以讓你的表字段結(jié)構(gòu) 趨向完善。
5.select * 盡量少用,你想要什么字段 就select 什么字段出來 不要老是用* 號!同理,只要一行數(shù)據(jù)時盡量使用 LIMIT 1
6.絕對不要輕易用order by rand() ,很可能會導致mysql的災難?。?BR>7.每個表都應該設(shè)置一個ID主鍵,最好的是一個INT型,并且設(shè)置上自動增加的AUTO_INCREMENT標志,這點其實應該作為設(shè)計表結(jié)構(gòu)的第一件必然要做的事!!
8.拆分大的 DELETE 或 INSERT 語句。因為這兩個操作是會鎖表的,表一鎖住了,別的操作都進不來了,就我來說 有時候我寧愿用for循環(huán)來一個個執(zhí)行這些操作。
9.不要用永久鏈接 mysql_pconnect();除非你真的非??隙愕某绦虿粫l(fā)生意外,不然很可能也會導致你的mysql死掉。
10.永遠別要用復雜的mysql語句來顯示你的聰明。就我來說,看到一次關(guān)聯(lián)了三,四個表的語句,只會讓人覺得很不靠譜。
2.字段的種類盡可能用int 或者tinyint類型。另外字段盡可能用NOT NULL。
3.當然無可避免某些字段會用到text ,varchar等字符類型,最好將text字段的單獨出另外一個表出來(用主鍵關(guān)聯(lián)好)
4.字段的類型,以及長度,是一個很考究開發(fā)者優(yōu)化功力的一個方面。如果表數(shù)據(jù)有一定的量了,不妨用PROCEDURE ANALYSE()命令來取得字段的優(yōu)化建議!(在phpmyadmin里可以在查看表時,點擊 “Propose table structure” 來查看這些建議) 如此可以讓你的表字段結(jié)構(gòu) 趨向完善。
5.select * 盡量少用,你想要什么字段 就select 什么字段出來 不要老是用* 號!同理,只要一行數(shù)據(jù)時盡量使用 LIMIT 1
6.絕對不要輕易用order by rand() ,很可能會導致mysql的災難?。?BR>7.每個表都應該設(shè)置一個ID主鍵,最好的是一個INT型,并且設(shè)置上自動增加的AUTO_INCREMENT標志,這點其實應該作為設(shè)計表結(jié)構(gòu)的第一件必然要做的事!!
8.拆分大的 DELETE 或 INSERT 語句。因為這兩個操作是會鎖表的,表一鎖住了,別的操作都進不來了,就我來說 有時候我寧愿用for循環(huán)來一個個執(zhí)行這些操作。
9.不要用永久鏈接 mysql_pconnect();除非你真的非??隙愕某绦虿粫l(fā)生意外,不然很可能也會導致你的mysql死掉。
10.永遠別要用復雜的mysql語句來顯示你的聰明。就我來說,看到一次關(guān)聯(lián)了三,四個表的語句,只會讓人覺得很不靠譜。
相關(guān)文章
達夢數(shù)據(jù)庫獲取SQL實際執(zhí)行計劃方法詳細介紹
在達夢數(shù)據(jù)庫中,使用EXPLAIN語句可以查看sql的執(zhí)行計劃,但EXPLAIN只生成執(zhí)行計劃,并不會真正執(zhí)行SQL語句,因此產(chǎn)生的執(zhí)行計劃有可能不準。本章將帶領(lǐng)大家了解多種獲取SQL實際的執(zhí)行計劃的方法2022-10-10解析mysql二進制日志處理事務(wù)與非事務(wù)性語句的區(qū)別
本篇文章是對mysql二進制日志處理事務(wù)與非事務(wù)性語句的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-06-06mysql-canal-rabbitmq 安裝部署超詳細教程
這篇文章主要介紹了mysql-canal-rabbitmq 安裝部署超詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03MySQL系列之五 視圖、存儲函數(shù)、存儲過程、觸發(fā)器
視圖就是一條select語句執(zhí)行后返回的結(jié)果集;觸發(fā)器是與表有關(guān)的數(shù)據(jù)庫對象,在滿足定義條件時觸發(fā),并執(zhí)行觸發(fā)器中定義的語句集合;函數(shù)存儲著一系列sql語句,調(diào)用函數(shù)就是一次性執(zhí)行這些語句,而存儲過程就是一組可編程的函數(shù),需要的朋友可以參考下2021-07-07