我需要知道derby数据库中有几百万个条目的最后一个条目。使用MAX()函数会导致性能很差。我还尝试了可滚动的resultSets并跳转到最后一个条目,但这甚至更糟。

是否有一种简单而又高效的方式来获得最后一行而不迭代所有条目?

SQL:select max(IDDATALINE) from DATADOUBLE_2 where DATADOUBLE_2.DATATYPE = 19表格:IDDATALINE [BIGINT] | DATATYPE[INTEGER] | DATA [DOUBLE]
我不知道是否定义了任何索引,我正在使用我接手的源代码。如果没有找到任何内容,我将在哪里/如何添加索引?

最佳答案

这是您的查询:

select max(IDDATALINE)
from DATADOUBLE_2
where DATADOUBLE_2.DATATYPE = 19;

您应该能够通过创建索引来提高性能。我建议:
create index idx_DATADOUBLE2_DATATYPE_IDDATALINE on DATADOUBLE_2(DATATYPE, IDDATALINE)

请注意,这是一个以该特定顺序使用两列的复合索引。

关于sql - SQL/Derby:获取表的最后一行。 MAX功能性能不佳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25380324/

10-09 01:00