mysql資料庫效能優化

2021-09-13 00:00:33 字數 2239 閱讀 8655

為查詢快取優化你的查詢

// 查詢快取不開啟

$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

lq​u

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

lq​u

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

lq​u

ery(

"sel

ect1

from

user

wher

ecou

ntry

=′ch

ina′

limi

t1")

;if(

mysq

ln​u

mr​o

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,那麼所有的語句一定是...