有没有人能帮我加宽这个查询?我找不到解决方案。
SELECT *,p.cat_id, cat_name FROM ( SELECT cat_id FROM categories ORDER BY cat_id LIMIT 700000, 10 ) o JOIN categories p ON p.cat_id = o.cat_id ORDER BY p.cat_id
这是非常快的表有800,000条记录,但我需要的是排序数据与order by子句和where claue也-分页。如果我使用order by,它会非常慢,或者结果不是有序的correctly>
SELECT *, p.cat_id, cat_name FROM(
SELECT cat_id
FROM categories
LIMIT 700000, 10
) o JOIN categories p
ON p.cat_id = o.cat_id
ORDER BY p.cat_name
page 1
LIMIT 700000,5:
id name
12525525 car
15155151 carpet
1521512i zone
page 2
LIMIT 700005,5
id name
12525525 carefull
15155151 excellent
52151222 drive我需要结果:
page 1 car
carpet
drive
excellent ... etc.
f.e. , this is very slow ofcourse >
SELECT *, p.cat_id, cat_name
FROM (
SELECT cat_id
FROM categories
**ORDER BY cat_name**
LIMIT 700000, 10
) o
JOIN categories p
ON p.cat_id = o.cat_id
ORDER BY p.cat_name主键cat_id,自动增量I在表中的字段上有索引
非常感谢您的帮助或一些想法
发布于 2012-09-20 22:49:22
您不需要对同一个表执行JOIN,而且必须在内部查询中执行ORDER BY,以便使用外部查询中的WHWRE子句进行正确排序:
SET @rownum = 0;
SELECT t.*, t.rank as TableRank
FROM
(
SELECT *, (@rownum := @rownum + 1) as rank
FROM categories c
ORDER BY c.cat_name
) t
WHERE rank BETWEEN ((@PageNum - 1) * @PageSize + 1)
AND (@PageNum * @PageSize)https://stackoverflow.com/questions/12515106
复制相似问题