Как извлечь из запроса только записи, необходимые для отображения? - PullRequest
2 голосов
/ 04 февраля 2012

Я использую плагин datatables jquery.

Я хотел бы получить только те записи, которые необходимы для отображения при каждом запросе к базе данных, потому что в таблице, возможно, будут сотни тысяч записей. Поэтому вместо того, чтобы делать что-то подобное, вызывать каждую запись в таблице и показывать только определенное их количество за раз из-за нумерации страниц ...

<cfquery name="get_users" datasource="dsn">
    select user_id, first_name, last_name
    from users
</cfquery>

<cfloop query="get_users" startrow="#startrow#" endrow="#endrow#">
    ...
</cfloop>

Есть ли способ поместить startrow и endrow в тег cfquery или как-то в sql, чтобы каждый раз получать только определенное количество записей?

1 Ответ

7 голосов
/ 04 февраля 2012

Вы захотите отправить свою начальную точку и количество записей на «страницу» в базу данных, и она вернет только эти записи.Я не знаю, какую базу данных вы используете, но вот пример запроса для MS SQL Server (2005 +):

SELECT user_id, first_name, last_name
FROM (
  SELECT ROW_NUMBER() OVER(
    ORDER BY last_name, first_name 
  ) AS rownum, user_id, first_name, last_name
  FROM users
) AS users_page
WHERE rownum >= 1000 AND rownum <= 1010
ORDER BY last_name, first_name

Это даст вам страницу записей от 1000 до 1010.

Вот версия mysql:

SELECT user_id, first_name, last_name
FROM users
ORDER BY last_name, first_name
LIMIT 999, 10 /* offset is zero-indexed in mysql */
...