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

來源:互聯網
上載者:User

標籤:存在   from   apach   pac   sql   測試的   top   between   test   

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語句,可能使得你的網站訪問速度急劇下降,後台資料庫面臨巨大壓力,並且很快陷入無法開啟頁面的窘境

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.