1.如果你真的想把返回的資料行打亂了,你有n種方法可以達到這個目的。這樣使用只讓你的資料庫的效能呈指數級的下降。這裡的問題是:mysql會不得不去執 行rand()函式(很耗cpu時間),而且這是為了每一行記錄去記行,然後再對其排序。就算是你用了limit 1也無濟於事(因為要排序)
// 千萬不要這樣做:
$r = mysql_query("select username from user order by rand() limit 1");
// 這要會更好:
$r = mysql_query("select count(*) from user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);
$r = mysql_query("select username from user limit $rand, 1");
2.把ip位址存成 unsigned int(一般還是用varchar(15))
很多程式設計師都會建立乙個 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";
mysql索引要點 MySql索引優化注意要點
設計好mysql索引可以讓資料庫飛起來,大大的提高資料庫效率。設計mysql索引時,建議注意以下幾點 1,建立索引 對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加 索引的話,那麼查詢任何哪怕只是一條特定...
mysql 語句優化 MySQL之語句優化
小睿從這一篇章開始說一說具體的sql語句的優化,希望大家可以在這乙個篇章裡面找到編寫sql語句的感覺,也會在這裡闡述一下為什麼有些語句要這樣子寫才能把效率提高上來。這乙個章節並沒有什麼系統化的東西,基本上都是本人平時在工作裡面的積累,所以讀起來可能會比較散,不過這不會影響大家對於sql語句優化的了解...
mysql 索引優化器 Mysql之查詢優化器
對於乙個sql語句,查詢優化器先看是不是能轉換成join,再將join進行優化 優化分為 1.條件優化 2.計算全表掃瞄成本 3.找出所有能用到的索引 4.針對每個索引計算不同的訪問方式的成本 5.選出成本最小的索引以及訪問方式 開啟查詢優化器日誌 開啟 set optimizer trace en...