2008-09-20 42 views
5

Tôi cần hiển thị nhiều trang tin tức trong một trang web là gì.
Tôi có nên thực hiện phân trang trong truy vấn db bằng cách sử dụng giới hạn hoặc thực hiện nó trong tập lệnh php của tôi sau khi nhận được tất cả kết quả không?Cách tốt nhất để phân trang kết quả bằng php

Trả lời

10

Giới hạn sử dụng trong SQL! Mỗi lần!

Nếu không, bạn sẽ ném nhiều dữ liệu hơn mức cần thiết, điều này làm cho tập lệnh của bạn không cần thiết chậm và sẽ dẫn đến các vấn đề về khả năng mở rộng khi lượng dữ liệu trong bảng tăng lên.

Giới hạn là bạn của bạn!

10

Giới hạn sử dụng - bạn không muốn chuyển khối lượng dữ liệu từ cơ sở dữ liệu sang công cụ tạo tập lệnh nếu bạn có thể tránh được.

0

Cá nhân, tôi sẽ sử dụng truy vấn để thực hiện. Rõ ràng, điều đó có thể thay đổi nếu giao dịch của bạn với AJAX và như vậy, nhưng chỉ cần làm một giới hạn cơ bản trong truy vấn và xuất kết quả là đơn giản và hiệu quả.

2

Nếu bạn chỉ muốn làm việc với một DBMS hỗ trợ điều này hơn là làm điều đó trên DBMS. Nếu bạn muốn hỗ trợ các DBMS khác trong tương lai thì quảng cáo một lớp giữa có thể xử lý tùy thuộc vào DBMS hiện tại.

2

Bạn có thể sử dụng một số thư viện hiện có để giúp bạn:

Pear :: Pager có thể giúp với sản lượng, và để hạn chế lưu lượng cơ sở dữ liệu để chỉ những gì bạn cần, bạn có thể sử dụng một wrapper được cung cấp trong các ví dụ mà đi kèm với nó.

Dưới đây là một tutorial Tôi chỉ googled mà có tất cả ...

1

Ngoài việc sử dụng LIMIT, tôi muốn đề nghị sử dụng một WHERE khoản rõ ràng để thiết lập bù đắp, và ra lệnh cho các kết quả trên cột đó. Ví dụ:

--- First page (showing first 50 records) 
SELECT * FROM people ORDER BY id LIMIT 50 
--- Second page 
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50 

Điều này tiếp tục giới hạn số hàng được trả lại cho hàng trong phạm vi mong muốn. Sử dụng cách tiếp cận WHERE (trái với mệnh đề LIMIT có chênh lệch riêng biệt, ví dụ: LIMIT 50,50) cho phép bạn xử lý hiệu quả phân trang thông qua các bản ghi với các khóa tự nhiên khác, ví dụ: theo thứ tự bảng chữ cái theo tên hoặc theo thứ tự ngày tháng.

Các vấn đề liên quan