㈠ SQL分批查詢
在查詢的數據量比較大時,我們會採用分批查詢的方式來查詢資料庫。
這是因為資料庫會把滿足查詢條件的所有記錄都裝載到內存,造成大量資源被佔用,嚴重影響系統運行的效率。
但是,資料庫固有的存儲過程不支持物理分頁,所以如果採用分批查詢方式,還需要開發人員編寫自己的存儲過程來實現。 具體的實現請從網上找,實現方式大致差不多!
這樣,服務端每次只把若干條(一般20條)記錄返回給客戶端,這樣,既節省資源,又加快通訊的效率!
㈡ thinkphp008. 資料庫的數據查詢
008. 資料庫的數據查詢
本節課我們來了解一下資料庫的數據查詢方式,單數據、數據集和其它查詢。
一.單數據查詢
1. Db::table()中table必須指定完整數據表(包括前綴);
2. 如果希望只查詢一條數據,可以使用find()方法,需指定where條件;
Db::table('tp_user')->where('id', 27)->find()
3. Db::getLastSql()方法,可以得到最近一條SQL查詢的原生語句;
SELECT * FROM `tp_user` LIMIT 1
4. 沒有查詢到任何值,則返回null;
5. 使用findOrFail()方法同樣可以查詢一條數據,在沒有數據時拋出一個異常;
Db::table('tp_user')->where('id', 1)->findOrFail()
6. 使用findOrEmpty()方法也可以查詢一條數據,但在沒有數據時返回一個空數組;
7. Db::table('tp_user')->where('id', 1)->findOrEmpty();
二.數據集查詢
1. 想要獲取多列數據,可以使用select()方法;
Db::table('tp_user')->select(); SELECT * FROM `tp_user`
2. 多列數據在查詢不到任何數據時返回空數組,使用selectOrFail()拋出異常; Db::table('tp_user')->where('id', 1)->selectOrFail();
3. 在select()方法後再使用toArray()方法,可以將數據集對象轉化為數組;
4. 當在資料庫配置文件中設置了前綴,那麼我們可以使用name()方法忽略前綴; Db::name('user')->select();
三.其它查詢
1. 通過value()方法,可以查詢指定欄位的值(單個),沒有數據返回null;
Db::name('user')->where('id', 27)->value('username');
$user = Db::table('tp_user')->select()->toArray(); mp($user);
2. 通過colunm()方法,可以查詢指定列的值(多個),沒有數據返回空數組; Db::name('user')->column('username');
3. 可以指定id作為列值的索引;
4. 如果處理的數據量巨大,成百上千那種,一次性讀取有可能會導致內存開銷過大;
5. 為了避免內存處理太多數據出錯,可以使用chunk()方法分批處理數據;
6. 比如,每次只處理100條,處理完畢後,再讀取100條繼續處理;
7. 可以利用游標查詢功能,可以大幅度減少海量數據的內存開銷,它利用了PHP生成器特性。每次查詢只讀一行,然後再讀取時,自動定位到下一行繼續讀取;
Db::name('user')->column('username', 'id');
Db::table('tp_user')->chunk(3, function($users) { foreach ($users as $user) {
mp($user);
}
echo 1; });
$cursor = Db::table('tp_user')->cursor(); foreach($cursor as $user){
mp($user);
}
㈢ 如何快速分批查詢出大表中的數據
用類似這樣的sql
select t.*
from t,
(select rowid k, rownum rn
from t
order by b) b
where t.rowid=b.k
and b.rn between 100001 and 200000;
㈣ sql語句查詢,分批顯示查詢結果
若果你有唯一的值id可以用下面的方法:
第一次:select top 5 from a
第二次:select top 5 from a where id not in (select top 5 id from a order by id asc)
第三次:select top 5 from a where id not in (select top 10 id from a order by id asc)
……
如此下去,控制後面那個子查詢top的數量就行了。
㈤ 資料庫分表後如何查詢數據
將原始數據降序一次,手工分完
要搜索某一項數據時復制關鍵詞,CTRL+F搜索全部就出來啦
雖然辦法不是最好的,但是起碼能夠有用 哈哈
㈥ 如何查詢資料庫中大批量數據
樓上的大哥....人家沒說一定是SQL Server資料庫吧..聚集索引是SQL Server的概念.1樓有一點說對了..創建索引是可以優先考慮的選擇,但是,並不是索引就一定會加快查詢速度的..另外,索引是很消耗磁碟空間的,這點也需要考慮清楚..主流的資料庫,在建表的時候就規定了主鍵和外鍵的話,那麼對應的主鍵和外鍵會自動加索引的.另外SQL語句的好壞可能會造成數倍的查詢速度的差別..寫SQL的時候有二個基本的原則,一.越接近資料庫核心的SQL語句查詢速度越快.即:用通用的標准SQL函數或語法,一定會比資料庫產品擴展的SQL要快大約80%所有二.優先使用子查詢而不是關聯查詢,比如表關聯(即FROM後面有多個表)...SQL語句也是可以優化的