1
0

perf: 优化查询语句

This commit is contained in:
2025-09-25 15:38:40 +08:00
parent 1edd74e35d
commit b4e2c81d36
3 changed files with 11 additions and 14 deletions

View File

@@ -6,6 +6,7 @@ import com.querydsl.core.types.Predicate;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
@@ -14,10 +15,7 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface DailyRepository extends SimpleRepository<Daily> { public interface DailyRepository extends SimpleRepository<Daily> {
@Query("select distinct daily.tradeDate from Daily daily") @Query("select distinct daily.tradeDate from Daily daily")
List<LocalDate> findDistinctTradeDate(); Set<LocalDate> findDistinctTradeDate();
@Query("select distinct daily.tradeDate from Daily daily where daily.stock.id = ?1")
List<LocalDate> findDistinctTradeDateByStockId(Long stockId);
@Query("select max(daily.tradeDate) from Daily daily") @Query("select max(daily.tradeDate) from Daily daily")
LocalDate findMaxTradeDate(); LocalDate findMaxTradeDate();

View File

@@ -4,8 +4,7 @@ import com.lanyuanxiaoyao.leopard.core.entity.Stock;
import com.lanyuanxiaoyao.service.template.repository.SimpleRepository; import com.lanyuanxiaoyao.service.template.repository.SimpleRepository;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.Set;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -17,16 +16,12 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface StockRepository extends SimpleRepository<Stock> { public interface StockRepository extends SimpleRepository<Stock> {
@Query("select distinct stock.industry from Stock stock where stock.industry is not null") @Query("select distinct stock.industry from Stock stock where stock.industry is not null")
List<String> findDistinctIndustries(); Set<String> findDistinctIndustries();
@Query("select distinct stock.code from Stock stock") @Query("select distinct stock.code from Stock stock")
List<String> findDistinctCodes(); Set<String> findDistinctCodes();
@Modifying
@Transactional(rollbackOn = Throwable.class) @Transactional(rollbackOn = Throwable.class)
@Modifying
void deleteAllByCodeIn(Collection<String> code); void deleteAllByCodeIn(Collection<String> code);
@EntityGraph(attributePaths = {"indicators"})
@Query("from Stock stock where size(stock.indicators) >= ?1")
List<Stock> findAllByIndicatorsSizeGreaterThanEqual(int count);
} }

View File

@@ -14,7 +14,11 @@ import org.springframework.transaction.annotation.Transactional;
@Repository @Repository
public interface TaskRepository extends SimpleRepository<Task> { public interface TaskRepository extends SimpleRepository<Task> {
@Modifying @Modifying
@Query("update Task task set task.status = com.lanyuanxiaoyao.leopard.core.entity.Task.Status.FAILURE where task.status = com.lanyuanxiaoyao.leopard.core.entity.Task.Status.RUNNING") @Query("""
update Task task set
task.status = com.lanyuanxiaoyao.leopard.core.entity.Task.Status.FAILURE,
task.finishedTime = current timestamp
where task.status = com.lanyuanxiaoyao.leopard.core.entity.Task.Status.RUNNING""")
void updateAllRunningTaskToFailure(); void updateAllRunningTaskToFailure();
@Transactional(rollbackFor = Throwable.class) @Transactional(rollbackFor = Throwable.class)