我有一个包含5000万行的数据库表。通过索引我减少了从50秒到2-5秒选择单行的请求时间。因为我仍然需要检索多个单行。通过在仅包含上个月记录的视图上执行选择,我能够进一步减少(<500ms)。
不幸的是,设备有可能在上个月内没有产生记录,但我仍然需要它的最新记录。
有没有可能告诉spring mvc&#34; fallback&#34;到另一个表,如果主表上没有结果?类似的东西:
@Entity
@Table
(
schema="tbl",
name="name_of_view_for_last_month",
fallbackname="name_of_actual_table"
)
答案 0 :(得分:0)
select
case check.exists
when 1 then check.id
when 0 then (select id
from name_of_actual_table
where <condition to get single row>)
end as result
from (
select count(id) as exist, id
from name_of_view_for_last_month last
where <condition to get single row>) check
如上所述,如何在SQL级别上解决它?
在Spring级别,您可以为完整数据表和月视图创建2个dao类。
在服务中调用monthDataDao,如果没有返回,则使用相同的请求调用fullDataDao