php分享二十 mysql優化

2021-09-07 05:51:27 字數 2153 閱讀 2772

1:垂直分割

示例一:在users表中有乙個欄位是家庭位址,這個欄位是可選字段,相比起,而且你在資料庫操作的時候除了個人資訊外,你並不需要經常讀取或是改寫這個字段。那麼,為什麼不把他放到另外一張表中呢? 這樣會讓你的表有更好的效能,大家想想是不是,大量的時候,我對於使用者表來說,只有使用者id,使用者名稱,口令,使用者角色等會被經常使用。小一點的表總是會有好的效能。

示例二: 你有乙個叫 「last_login」 的字段,它會在每次使用者登入時被更新。但是,每次更新時會導致該錶的查詢快取被清空。所以,你可以把這個字段放到另乙個表中,這樣就不會影響你對使用者id,使用者名稱,使用者角色的不停地讀取了,因為查詢快取會幫你增加很多效能。

注意:被分出去的字段所形成的表,你不會經常性地去join他們,不然的話,這樣的效能會比不分割時還要差,而且,會是極數級的下降。

2:拆分大的 delete 或 insert 語句

while (1) 

// 每次都要休息一會兒

usleep(50000);

}

3:越小的列會越快

對於大多數的資料庫引擎來說,硬碟操作可能是最重大的瓶頸。所以,把你的資料變得緊湊會對這種情況非常有幫助,因為這減少了對硬碟的訪問。

很多程式設計師都會建立乙個 varchar(15) 欄位來存放字串形式的ip而不是整形的ip。如果你用整形來存放,只需要4個位元組,並且你可以有定長的字段。而且,這會為你帶來查詢上的優勢,尤其是當你需要使用這樣的where條件:ip between ip1 and ip2。

我們必需要使用unsigned int,因為 ip位址會使用整個32位的無符號整形。

而你的查詢,你可以使用 inet_aton() 來把乙個字串ip轉成乙個整形,並使用 inet_ntoa() 把乙個整形轉成乙個字串ip。在php中,也有這樣的函式 ip2long() 和 long2ip()。

1 $r = "update users set ip = inet_aton('') where user_id = $user_id";

5:mysql order by 語句用法與優化詳解

1>where + order by的索引優化,形如

select [column1],[column2],…. from [table] where [columnx] = [value] order by [sort];

建立乙個聯合索引(columnx,sort)來實現order by 優化。

注意:如果columnx對應多個值,如下面語句就無法利用索引來實現order by的優化

select [column1],[column2],…. from [table] where [columnx] in ([value1],[value2],…) order by[sort];

2>where+ 多個欄位order by

select * from [table] where uid=1 order x,y limit 0,10;

立索引(uid,x,y)實現order by的優化,比建立(x,y,uid)索引效果要好得多

在某些情況中,mysql可以使用乙個索引來滿足order by子句,而不需要額外的排序。where條件和order by使用相同的索引,並且order by的順序和索引順序相同,並且order by的字段都是公升序或者都是降序。

例如:下列sql可以使用索引。

select * from t1 order by key_part1,key_part2,... ;

select * from t1 where key_part1=1 order by key_part1 desc, key_part2 desc;

select * from t1 order by key_part1 desc, key_part2 desc;

但是以下情況不使用索引:

①select * from t1 order by key_part1 desc, key_part2 asc;

--order by的字段混合asc和desc

②select * from t1 where key2=constant order by key1;

--用於查詢行的關鍵字與order by中所使用的不相同

③select * from t1 order by key1, key2;

--對不同的關鍵字使用order by:

php分享二十六 讀寫日誌

一 讀寫日誌注意事項 1 fgets取出日誌行後,注意用trim過濾下 2 explode t line 拆分後,注意判斷下個數是否正確,如果不正確,怎麼處理?如果某一列已確定是某種形式 比如 param 5 為 則應該判斷是否是 如果不是怎麼處理 3 如果判斷某個字串裡是否有某個值時,要記住是否必...

php優化 nginx優化 mysql優化

php優化 1 將類的方法定義為static。2 盡量使用單引號。3 修改php fpm程序數。4 修改單個指令碼最大可使用記憶體。5 大的陣列使用完之後要及時釋放。6 迴圈的時候,制定最大迴圈次數 7 不使用 遮蔽錯誤 8 盡量採用大量的 php 內建函式 9 使用require代替require...

PHP效能全面優化分享

一 規範說明 效能是 執行是否良好的關鍵因素,的效能與效率影響著公司的運營成本及長遠發展,編寫出高質高效的 是我們每個開發人員必備的素質,也是我們良好的職業素養。二 影響效能的因素 a 商業需求 1.需求合理性 2.需求與系統的整合 3.需求所帶來的商業利益是否與需求開發的成本成正比 4.需求所帶來...