天天看點

分頁功能實作mysql_MySQL中資料結果集分頁功能的實作方法

---------------------------------------------------------------------------

---- 本文為andkylee個人原創,請在尊重作者勞動成果的前提下進行轉載;

---- 轉載務必注明原始出處

:

http://blog.csdn.net/andkylee

--- 2010-05-31 18:46:12

---- 關鍵字:  MySQL 分頁  limit

----------------------------------------------------------------------------

目前B/S架構的軟體大行其道。通過浏覽器如何向終端使用者隻展示指定頁面内容而不是全部的?畢竟傳回全部結果集,時間和空間開銷都很大。

如此情況下,對SQL傳回結果集進行分頁是個很不錯的解決方案。

本文主要介紹MySQL資料庫中的分頁實作方式。我以一個資料庫管理者的角度進行說明,至于具體的實作還需要開發人員詳細編寫過程。

總的說來,在MySQL中實作分頁功能是很簡單的事情。MySQL資料庫的開發人員替廣大的使用者着想,提供了一個關鍵字limit來實作限定指定範圍的功能。

下面簡單介紹分頁的思路。

在MySQL5.0.15-nt-max下進行測試。

1.建立一張臨時表(MyISAM或者InnoDB類型的都可以),本測試表沒有使用自增列。

CREATE TABLE `andkylee` (

`id` int(11) NOT NULL,

`name` varchar(30) default NULL,

`sex` char(1) NOT NULL,

`age` smallint(6) default NULL,

`note` varchar(100) default NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2.插入測試資料。 在這裡尤其介紹一種插入大量測試資料的方法。

先插入2條資料,

insert into andkylee

values(1,'hanyuliu','F',25,'aaaaaaaaaa'),(2,'andkylee','F',33,'bbbbbbbbbb');

批量插入資料

在沒有自增列的情況下,用下面的語句來實作插入“重複”資料。

insert into andkylee

select id+(select max(id) from andkylee),name,sex,age,note from andkylee;

本語句能夠複制表已有的所有記錄,并且能夠實作“主鍵列”自增。

可能有點缺陷的是:需要再select清單中逐個寫出各個列名。但是,好像含有自增列的表為了實作插入重複資料,也必須把非自增列都寫出來吧。 如果我說的不對,請告知。

循環插入重複資料,使得表資料行數以指數方式增長。 再把已有的資料插入到表内,行數變為以前的2倍。

insert into andkylee

select id+(select max(id) from andkylee),name,sex,age,note from andkylee;

mysql> select count(*) from andkylee;

+----------+