我需要知道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/