目錄
回覆內容:
首頁 後端開發 php教程 mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

Aug 04, 2016 am 09:22 AM
mysql oracle php

採用的最佳化方法:

  1. limit最佳化,先取出分頁對應的ID,再依照欄位值,再取limit

  2. 索引

  3. myisam引擎

附上代碼:
查詢資料總數:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

下圖是查詢分頁對應的ID:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

下圖是查詢結果:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

---------------2016.7.6 17:47更新--------------------
like那個地方確實不該要,已經做了處理,不該要的不要了。 代碼圖也更新了。現在響應能維持在2.5s以下

執行計畫如下:這是第一條語句,查詢資料總量

1

<code>SELECT `r`.`id` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != ''</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?
第二條語句 查詢分頁首位欄位ID

1

<code>SELECT `r`.`id` as id FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' ORDER BY `id` DESC LIMIT 1 OFFSET 5988</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

第三條語句:查詢資料結果集

1

<code>SELECT `r`.`id` as id, `s`.`code` as code, `b`.`breed_name`, `r`.`state`, `u`.`username`, `r`.`recordtime`, `r`.`remark` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' AND `r`.`id` &lt; '109541' ORDER BY `id` DESC LIMIT 12</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

請各位大神幫忙分析下...

回覆內容:

採用的最佳化方法:

  1. limit最佳化,先取出分頁對應的ID,再依照欄位值,再取limit

  2. 索引

  3. myisam引擎

附上代碼:
查詢資料總數:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

下圖是查詢分頁對應的ID:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

下圖是查詢結果:

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

---------------2016.7.6 17:47更新--------------------
like那個地方確實不該要,已經做了處理,不該要的不要了。 代碼圖也更新了。現在響應能維持在2.5s以下

執行計畫如下:這是第一條語句,查詢資料總量

1

<code>SELECT `r`.`id` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != ''</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?
第二條語句 查詢分頁首位欄位ID

1

<code>SELECT `r`.`id` as id FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' ORDER BY `id` DESC LIMIT 1 OFFSET 5988</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

第三條語句:查詢資料結果集

1

<code>SELECT `r`.`id` as id, `s`.`code` as code, `b`.`breed_name`, `r`.`state`, `u`.`username`, `r`.`recordtime`, `r`.`remark` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' AND `r`.`id` &lt; '109541' ORDER BY `id` DESC LIMIT 12</code>

登入後複製
登入後複製

mysql 8000+分頁點擊任何一頁回應控制在3-4s之間,請問如何繼續優化?

請各位大神幫忙分析下...

能不能把sql,執行計畫貼出來

在事務裡執行會提高效率的

1.先把表連接查詢拆成簡單查詢
2.like有沒有必要?

初步來看3個sql:

1.總量的sql,samplerecord沒走任何索引,全表掃描,必然會慢些
2.查詢id的sql,排序+全表,預計也慢
3.最後有一個應該還好

所以整個來說就是避免全表掃描,如果確實要全表數據,那麼limit不會慢到哪裡去。
最後猜測,code!=''條件篩選性較高,也就是有很多這類條件,導致的篩選比較慢,試試看加個索引。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 Dec 09, 2024 am 11:42 AM

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles