---------------------------------------------------------------------------
---- 本文為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;
+----------+