php mysql 一個查詢優化的簡單例子

lankecms發表於2016-04-03
PHP+Mysql是一個最經常使用的黃金搭檔,它們倆配合使用,能夠發揮出最佳效能,當然,如果配合Apache使用,就更加Perfect了。

因此,需要做好對mysql的查詢優化。下面通過一個簡單的例子,展現不同的SQL語句對於查詢速度的影響:

存在這樣的一張表test,它有一個自增的id作為主索引。現在要查詢id號處於某一個範圍內的記錄,可以使用如下SQL語句:

 程式碼如下 複製程式碼
SELECT *
FROM `test`
order by id asc
limit 208888,50

這條SQL語句的意思是從id號為208888的記錄開始向後取50條記錄。在一個30萬條記錄的資料庫中測試,在主索引都已經建立好的情況下,執行這條語句的時間為40~50秒。

那麼有沒有更快SQL語句來執行呢?顯然是有的。看看下面這條SQL語句:

 程式碼如下 複製程式碼
SELECT *
FROM `test`
WHERE id
BETWEEN 208838
AND 208888

這條語句使用了一個條件進行過濾,在實際中測試的執行時間約為0.06秒。

究其原因,是因為雖然id屬性上已經有索引了,但是排序仍然是一個非常高代價的操作,要慎用。而第二個語句,就可以讓MySql充分利用資料庫中已經建立好的B+樹索引,所以查詢起來速度相當快,是原來的幾百倍。

由此可見,網站開發者在使用SQL語句的時候,一定要小心謹慎,因為一個疏忽大意的SQL語句,可能使得你的網站訪問速度急劇下降,後臺資料庫面臨巨大壓力,並且很快陷入無法開啟頁面的窘境

相關文章