mysql的優化是非常重要的.其他最常用也最需要優化的就是limit.mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降.
同樣是取10條資料
select * from yanxue8_visit limit 10000,10 和
select * from yanxue8_visit limit 0,10
就不是乙個數量級別的.
網上也很多關於limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用.今天發現一篇文章寫了些關於limit優化的,很不錯.
文中不是直接使用limit,而是
1、offset比較小的時候.
select * from yanxue8_visit limit 10,10
多次執行,時間保持在0.0004-0.0005之間
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10,1
) limit 10
多次執行,時間保持在0.0005-0.0006之間,主要是0.0006
結論:偏移offset較小的時候,直接使用limit較優.這個顯然是子查詢的原因.
2、offset大的時候.
select * from yanxue8_visit limit 10000,10
多次執行,時間保持在0.0187左右
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10000,1
) limit 10
多次執行,時間保持在0.0061左右,只有前者的1/3.可以預計offset越大,後者越優.
以後要注意改正自己的limit語句,優化一下mysql了
msql資料庫分割槽
一 為什麼要進行分割槽 partition 需求 大資料。解決辦法 分而治之。將大表和大資料分為更小的操作單元。在mysql中允許將表 索引和索引編排分為索引編排表細分為更小的單元。分割槽後,每個分割槽有自己單獨的名稱。對於dba來講,這些分割槽可以統一管理,也可以分開管理。但是對於應用程式來講,分...
資料庫MSQL語句
1丶資料庫操作 建立資料庫create xd 資料庫名 檢視資料庫show xd 更改資料庫資訊 alter xd 資料庫名 character set 字符集 刪除資料庫drop xd 資料庫名 drop xd if exists 資料庫名 進入乙個資料庫use 資料庫名 檢視當前資料庫selec...
資料庫 檢索資料
以mysql為例 檢視mysql執行狀態 status 使用資料庫 use 資料庫名 檢視所有資料庫 show databases 檢視所有表 show tables 從表中檢索某一列的資料 select 列名 from 表名 從表中檢索某些列的資料 select 列名,列名,列名,from 表名 ...