【发布时间】:2014-08-10 14:38:44
【问题描述】:
我正在尝试翻阅这个表,所以我最终得到了这个查询(它不起作用)。
SELECT MIN(user_uid) AS FIRST,
MAX(user_uid) AS LAST,
user_number, user_name
FROM user_table
WHERE user_uid > MAX(FIRST,{0}) AND user_uid < MIN(LAST,{1})
AND ( user_name LIKE '%{2}%' OR user_number LIKE '%{3}%' )
AND user_category={4} OR user_category={5}
ORDER BY user_uid LIMIT {6}
我从我的 c# 变量中获取参数值。我在外部存储 FIRST,LAST 以使用它们移动到下一页/上一页。
我也创建了这个索引:
CREATE INDEX idx1 ON user_table (user_uid);
请注意:我看到了this answer,但这是我唯一想到的获取 First 和 Last 值的方法。
如何高效地在这个表中分页?
【问题讨论】:
-
这个查询没有意义。您打算在第一页和下一页上为
{0}和{1}使用什么值? -
0 和一个表示最大 int 值的值
-
第一个和最后一个值是第一个和最后一个返回行中的值。