監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
新余網(wǎng)站建設(shè)公司

當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 新余OA > 新余網(wǎng)站建設(shè)公司

PHP開發(fā)者經(jīng)常犯的幾個MySQL錯誤

申請免費試用、咨詢電話:400-8352-114

PHP網(wǎng)站建設(shè)過程中開發(fā)者經(jīng)常犯的幾個MySql 錯誤

1.運用MyISAM而不是InnoDB
完全錯誤,辯駁來由:
起首原文說MyISAM是默許運用得,而實踐上到了MySQL 5.5.x,InnoDB曾經(jīng)成為了默許得表引擎。

別的,簡略得運用InnoDB不是處理一切問題得辦法,盲目得運用甚至?xí)故褂霉δ芟陆?0%甚至40%。

最佳辦法照樣針對詳細營業(yè)詳細處置,例如論壇中版塊表,新聞分類表,各類碼表等長工夫不操作得表,照樣要用功能優(yōu)異得MyISAM引擎。
而需求用到事務(wù)處置得例如用戶、賬目、流水等嚴(yán)厲要求數(shù)據(jù)完好性和時序性得,則需求用InnoDB引擎,而且使用也要用功德務(wù)處置機制。當(dāng)然,事務(wù)處置必定要帶來很多得功能損耗,然則這在簡略高并發(fā)使用上是必需得。

最終,外鍵約束在公共web互聯(lián)網(wǎng)使用上普通是不必得,由于他會嚴(yán)峻影響功能。數(shù)據(jù)完好性照樣靠順序員或許使用架構(gòu)自身得強健來維護。而正軌得第三范式只是在企業(yè)泌部MIS系統(tǒng)和12306這種網(wǎng)站上運用。

2.運用PHP得mysql辦法
不完全錯,但要酌情選用:
mysqli雖然好,然則不是一切得效勞器都為PHP編譯了mysqli得支撐。
當(dāng)你得使用假如是能確定只用本人擺設(shè)得效勞器,而使用也是完全本人開拓,則mysqli是最好得選擇。
然則一旦你得使用有能夠擺設(shè)在虛擬主機或許由其別人擺設(shè)(例如散布式項目),照樣老誠懇實運用mysql函數(shù)集吧,好好封裝一下或許運用成熟框架根絕sql注入。

3.但是濾用戶輸入
這一點不必說了,要么MagicQuote,要么選用成熟框架。sql注入老話題了。

4.不運用UTF-8
大局部狀況下對,但也要仔細思索:
要曉得,一個UTF-8字符占3個字節(jié),所以比GBK等其他編碼得文件大33%。換句話說,一樣得網(wǎng)頁用UTF-8編碼假如是100KB,那么換成GBK編碼則只要66KB。所以即使你得PHP確定要用UTF-8,那么前端頁面也要依據(jù)狀況選擇需求得編碼。然則,假如PHP用UTF-8,前端模版是GBK,再加上模版引擎不強壯,那么轉(zhuǎn)碼任務(wù)夠你受得。所以盡能夠得選用本人需求得編碼,而不是簡略得選擇UTF-8了事。

最終煩瑣一句:UTF-8下:strlen("我")=3,而GBK下:strlen("我")=2

5.該用SQL得當(dāng)?shù)剡\用PHP
相同酌情思索:
例如,有些人習(xí)氣在建表時,默許值填寫CURRENT_TIMESTAMP,用來到達注冊工夫、發(fā)帖工夫得結(jié)果。 或許在工夫判別得SQL語句中,寫相似SELECT x FROM tab1 WHERE regdate < UNIX_TIMESTAMP()。那么我只能說,你為系統(tǒng)埋下了很蔭蔽得BUG。由于數(shù)據(jù)庫和使用往往不在統(tǒng)一臺機械上,工夫很輕易呈現(xiàn)偏向。當(dāng)你一套使用得工夫參照禁絕確時,就會呈現(xiàn)很大得問題。
準(zhǔn)確做法是:不要運用MySQL得任何工夫函數(shù),而是在使用里核算工夫。假如是散布式使用,必然要有工夫效勞器來一致治理工夫。
而文中說得一些MySQL數(shù)學(xué)函數(shù) ,也是要慎用。由于在大型使用中,數(shù)據(jù)庫得擔(dān)負往往是最大得,而復(fù)雜得WHERE語句又是形成慢查詢得首惡。所以,要把核算盡能夠得放在廉價得、不影響全局不變得使用效勞器上,而不是中心數(shù)據(jù)庫上。

6.不優(yōu)化查詢
這點也不必說了,大型使用上甚至不答應(yīng)運用各類JOIN,哪怕生寫兩條查詢,查回來在用PHP兼并數(shù)據(jù)。

7.運用錯誤得數(shù)據(jù)類型
INT,TinyINT,VARCHAR,CHAR,TEXT這些字段類型得合理選用無可厚非。
而Date、DateTime、TIMESTAMP這三品種型,在大型使用中是絕對不成以運用得,而是要用INT(10) UNSIGNED替代。
一個是功能,別的就是使用中尤其是PHP對UNIX_TIMESTAMP工夫戳得轉(zhuǎn)化真實太便利了。用Date要輸出各類工夫花樣反而費事。

8.在SELECT查詢中運用*
共勉

9.索引缺乏或許過度索引
索引是必需得,然則假如索引都處理不了得查詢,思索memcache或許nosql處理方案吧。

10.不備份
這條是作者充數(shù)么?

11.別的:不思索其他數(shù)據(jù)庫
這條相當(dāng)準(zhǔn)確。使用中不只要針對使用選擇其他數(shù)據(jù)庫,甚至還要針對詳細得營業(yè)類型,在統(tǒng)一套使用中并行運用多種數(shù)據(jù)庫。哪怕不是數(shù)據(jù)庫,而是其他各類緩存、內(nèi)存存儲等處理方案。

發(fā)布:2007-03-31 15:14    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
新余OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

泛普新余網(wǎng)站建設(shè)公司其他應(yīng)用

新余軟件開發(fā)公司 新余門禁系統(tǒng) 新余物業(yè)管理軟件 新余倉庫管理軟件 新余餐飲管理軟件 新余網(wǎng)站建設(shè)公司