MySQL分頁的優化

2021-09-29 17:38:25 字數 3227 閱讀 5274

limit [offset,]  rows
對於mysql自帶分頁方式的優化

建立模擬資料表以及模擬資料

-- 建立模擬資料sql

drop

table

ifexists student;

create

table

ifnot

exists student

( student_id int

notnull

auto_increment

primary

key,

student_name varchar(50

)not

null

)engine

=innodb

default

charset

= utf8;

drop

table

ifexists course;

create

table

ifnot

exists course

( course_id int

notnull

auto_increment

primary

key,

course_name varchar(10

)not

null

)engine

=innodb

default

charset

= utf8;

drop

table

ifexists studentcourse;

create

table

ifnot

exists sc

( sc_id int

notnull

auto_increment

primary

key,

student_id int

notnull

, course_id int

notnull

, score int

notnull

)engine

=innodb

default

charset

= utf8;

-- 以下資料表對應的資料記錄數

-- 10 course

-- 70,000 student

-- 700,000 studentcourse

-- 根據以上要求準備測試資料

insert

into course (course_id, course_name)

select

null

as course_id, concat(

'course'

, id)

as course_name

from information_schema.

`collations`

order

by id asc

limit0,

10;insert

into student (student_id, student_name)

select

null

as student_id,

''as student_name

from

(select

1as column_order_id

from information_schema.

`columns

`limit0,

3500

)as t

cross

join

(select

1as collation_order_id

from information_schema.

`columns

`limit0,

200)

as t2;

update student

set student_name = concat(

'student'

, student_id)

where student_name ='';

insert

into sc (sc_id, student_id, course_id, score)

select

null

as sc_id, t2.student_id, t.course_id, ceiling(rand()*

100)

as score

from course as t

cross

join student as t2;

select s.

*from

student s

inner

join sc sc

on sc.s_id = s.s_id

where sc.c_id=

1and sc.score=

100;

自帶的分頁查詢
select s_id,sc_id,c_id,score from sc order

2.優化自帶分頁

可以清晰看到提公升的速度還是很快的為了證明不是快取的原因

連續執行n(n>2)次自帶的分頁語句:

結果表明不是因為快取造成的第二次查詢速度變快

mysql的分頁優化 mysql分頁優化

有個200多萬的使用者表,顯示列表時非常慢,查了一下原來使用了limit進行分頁。前幾頁用時很少 但是後面頁數就簡直不可忍了,實際的業務邏輯還有排序,就更慢了 試試用查詢時用帶索引的鍵來確定範圍。最大的id是103948598 時間和用limit比相差幾千倍啊!使用explain 檢視一下 mysq...

mysql 分頁優化 Mysql 查詢分頁優化

全表掃瞄,速度極慢 limit 語句的查詢時間與起始記錄的位置成正比 mysql 的 limit 語句是很方便,但是對記錄很多的表並不適合直接使用 建立測試表 drop table if exists t user create table test t user id int 10 unsigne...

mysql 分頁優化 MySQL分頁優化實驗與總結

前言 分頁的sql優化是日常開發中經常遇到的問題,筆者在此做乙個經驗總結,並附上相應的實驗過程。實驗準備 若不想親自實驗的,可以直接跳過這一節。但還是建議大家做一下實驗,眼見為實。1.安裝測試資料庫 本次實驗使用的資料是mysql官方提供的employee資料庫,mysql官方提供了一些測試資料庫,...