perf: 优化查询语句
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user