MySQL选择,按DESC排序,并获取特定索引

时间:2018-02-18 06:09:47

标签: mysql select sql-order-by

我有一个很大的MySQL表(大约15,000多行),我正在寻找一种方法来执行以下查询,但是以更有效的方式:

SELECT col, otherCol, theOtherCol 
FROM table 
WHERE anotherCol > 0 
ORDER BY ohACol DESC

这个查询在我的VPS上占用了太多的RAM,我可以理解,因为它选择了超过15,000行。我确实知道15,000+中需要哪5个索引(按DESC顺序排序后)。我怎样才能将这5个放入我的结果集中,而不是全部15,000个?

2 个答案:

答案 0 :(得分:0)

如果您有所需索引的列表,则可以向WHERE子句添加约束:

 WHERE indexCol IN (1,2,3,4,5)

答案 1 :(得分:0)

只需使用分页查询来限制发送到应用程序服务器的数据量。见Using MySQL LIMIT to Constrain The Number of Rows Returned By SELECT Statement。例如,如果您的页面大小为100,则可以使用以下内容获取第一页的结果:

SELECT col, otherCol, theOtherCol 
FROM table 
WHERE anotherCol > 0 
ORDER BY ohACol DESC
LIMIT 0, 100;

第二页是:

SELECT col, otherCol, theOtherCol 
FROM table 
WHERE anotherCol > 0 
ORDER BY ohACol DESC
LIMIT 100, 100;

第三个:

SELECT col, otherCol, theOtherCol 
FROM table 
WHERE anotherCol > 0 
ORDER BY ohACol DESC
LIMIT 200, 100;

因此,您必须控制应用程序中的分页。