為查詢快取優化你的查詢
// 查詢快取不開啟
$r = mysql_query(「select username from user where signup_date >= curdate()」);
// 開啟查詢快取
$today = date(「y-m-d」);
r =m
ysql
quer
y("s
elec
tuse
rnam
efro
muse
rwhe
resi
gnup
date
>=′
r = mysql_query("select username from user where signup_date >= '
r=mysq
lqu
ery(
"sel
ectu
sern
amef
romu
serw
here
sign
upd
ate>=′
today』");
當只要一行資料時使用 limit 1
// 沒有效率的:
r =m
ysql
quer
y("s
elec
t∗fr
omus
erwh
erec
ount
ry=′
chin
a′")
;if(
mysq
lnum
rows
(r = mysql_query("select * from user where country = 'china'"); if (mysql_num_rows(
r=mysq
lqu
ery(
"sel
ect∗
from
user
wher
ecou
ntry
=′ch
ina′
");i
f(my
sqln
umr
ows
(r) > 0)
// 有效率的:
r =m
ysql
quer
y("s
elec
t1fr
omus
erwh
erec
ount
ry=′
chin
a′li
mit1
");i
f(my
sqln
umro
ws
(r = mysql_query("select 1 from user where country = 'china' limit 1"); if (mysql_num_rows(
r=mysq
lqu
ery(
"sel
ect1
from
user
wher
ecou
ntry
=′ch
ina′
limi
t1")
;if(
mysq
lnu
mro
ws(r) > 0)
為搜尋欄位建索引
索引並不一定就是給主鍵或是唯一的字段。如果在你的表中,有某個欄位你總要會經常用來做搜尋,那麼,請為其建立索引吧
4.在join表的時候使用相當型別的例,並將其索引
如果你的應用程式有很多 join 查詢,你應該確認兩個表中join的字段是被建過索引的。這樣,mysql內部會啟動為你優化join的sql語句的機制。
// 在state中查詢company
$r = mysql_query(「select company_name from users
left join companies on (users.state = companies.state)
where users.id = $user_id」);
// 兩個 state 字段應該是被建過索引的,而且應該是相當的型別,相同的字符集。
5.避免 select *
6.使用 enum 而不是 varchar
7.固定長度的表會更快
效能優化 MySQL資料庫優化
可以從哪幾個方面進行資料庫的優化?如下圖所示 a sql及索引優化 根據需求寫出良好的sql,並建立有效的索引,實現某一種需求可以多種寫法,這時候我們就要選擇一種效率最高的寫法。這個時候就要了解sql優化 b 資料庫表結構優化 根據資料庫的正規化,設計表結構,表結構設計的好直接關係到寫sql語句。c...
資料庫效能優化 MySQL
序 即使有較長的快取有效期和較理想的快取命中率,但是快取的建立和快取過期後的重建都是需要訪問資料庫的。對資料庫寫操作不是很容易引入快取策略。11.1 檢視資料庫狀態 可以通過show status show innodb status 來檢視mysql資料庫的狀態,使用mysqlreport這個第三...
效能優化 mysql資料庫
一 mysql常用命令 1.開啟日誌 1 show global variables like genera 2 set global general log on 3 set global general log off 2.mysql如果開了set autocommit 0,那麼所有的語句一定是...