값을 기반으로 이전 레코드를 선택하는 SQL 쿼리

Nelus

SQL Server 2012 Express 사용.

아래의 SQL 쿼리는 매우 느리고 성능을 향상 시키거나 더 효율적으로 수행하려면 조언이 필요합니다.

라는 테이블 PriceDaily을 쿼리하고 Date주어진 날짜에 대해 열을 쿼리합니다 2009/11/27( 예 : 날짜는 임의의 날짜가 될 수 있으며 실제로 변수에 의해 결정됨).

날짜별로 정렬 한 다음 X 레코드를 위 (+ X) 또는 아래 (-X)로 이동하고 날짜 필드에 대한 해당 레코드의 값을 반환해야합니다. 예를 들어 -5의 경우 5 개의 레코드를 위로 이동하고 날짜 값을 반환합니다.

예를 들어 2009/11/20테이블의 일부가 다음과 같은 경우 반환됩니다 ( 2009/11/20위의 5 개 레코드 이므로 2009/11/27).

2009/11/20
2009/11/23
2009/11/24
2009/11/25
2009/11/26
2009/11/27
2009/11/30
2009/12/01
2009/12/02
2009/12/03
2009/12/04

최적화 할 쿼리 :

with Records AS
(
   select 
       row_number() over(order by date) as 'row', 
       * 
   from [NIG03].[dbo].[PriceDaily]
)
select Date 
from records
where row = (SELECT Top 1 ROW_NUMBER() OVER(ORDER BY Date DESC) AS Row
             FROM [NIG03].[dbo].[PriceDaily]
             WHERE [NIG03].[dbo].[PriceDaily].Date<'2009/11/27'
             ORDER BY Date) - X + 1

이 쿼리를 최적화하는 방법에 대한 조언은 높이 평가 될 것입니다.

고든 리노 프

창 기능 만 사용하여이를 표현할 있습니다 .

select pd.*,
       max(case when date = '2009-11-27' then seqnum end) as date_seqnum
from (select pd.*,
             row_number() over (order by date) as seqnum
      from PriceDaily pd
     ) pd
where seqnum = date_seqnum - X + 1;

이 쿼리 (및 쿼리)의 경우 성능 문제는 다음에 대한 인덱스가 필요하다는 것입니다 date.

create index idx_pricedaily_date on PriceDaily(date);

대체 접근 방식이 있습니다 (인덱스의 이점도 누릴 수 있음).

select pd.*
from PriceDaily pd
where date >= '2009-11-27'
order by date
offset X rows fetch first 1 row only;

물론의 where다른 값에 대해 에서 오프셋과 비교 방향을 조정해야합니다 X.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이전 쿼리를 기반으로 테이블에서 임의의 행을 선택하는 SQL 쿼리

분류에서Dev

열 값을 기반으로하는 SQL 선택 쿼리

분류에서Dev

SQL : 다른 테이블의 값을 기반으로 한 테이블에 레코드가 있는지 여부를 쿼리하는 방법

분류에서Dev

SQL : 다른 테이블의 값을 기반으로 한 테이블에 레코드가 있는지 여부를 쿼리하는 방법

분류에서Dev

열 값을 기반으로 단일 최상의 레코드를 선택하는 쿼리

분류에서Dev

열 값을 기반으로 단일 최상의 레코드를 선택하는 쿼리

분류에서Dev

다른 테이블의 열 값을 기반으로 한 테이블에서 선택하는 SQL 쿼리

분류에서Dev

SQL 쿼리를 사용하여 순차적 관계를 기반으로 레코드를 선택하는 방법

분류에서Dev

이름과 성을 기반으로 중복 레코드를 찾는 MYSQL 쿼리

분류에서Dev

열 값을 기반으로 데이터를 가져 오는 SQL 쿼리

분류에서Dev

SQL 쿼리 : 관련 테이블의 모든 레코드가 특정 속성 값을 갖는 레코드를 선택하는 방법

분류에서Dev

선택 옵션을 기반으로하는 SQL 쿼리

분류에서Dev

두 열에서 ID는 같지만 값이 다른 레코드를 선택하는 SQL 쿼리

분류에서Dev

열을 기반으로 레코드를 선택하지만 해당 열의 모든 값을 표시하는 SQL

분류에서Dev

값을 기준으로 레코드를 병합하는 쿼리

분류에서Dev

SQL 쿼리 조언-중복을 기반으로 레코드 업데이트

분류에서Dev

등급이있는 레코드를 선택하기 위해 SQL 쿼리에서 계산

분류에서Dev

테이블의 다른 조건을 기반으로 레코드 쿼리 (레코드 선택)

분류에서Dev

데이터 프레임의 값을 기반으로 여러 AND 문을 사용하는 R의 SQL 쿼리

분류에서Dev

다음 레코드 값을 기반으로하는 GS 쿼리 레코드

분류에서Dev

이전 쿼리를 기반으로 선택 쿼리 수행

분류에서Dev

첫 번째 테이블의 정보를 기반으로 두 번째 테이블을 선택할 때 SQL 쿼리 구문을 지정하는 방법

분류에서Dev

필드의 일부 값을 기반으로 값을 가져 오는 SQL 쿼리

분류에서Dev

매개 변수 선택을 기반으로 보고서를 생성하는 SQL 쿼리

분류에서Dev

레코드 이동을 기반으로 데이터를 검색하는 Oracle SQL

분류에서Dev

테이블 값을 기반으로 동적 SQL 쿼리를 작성하는 방법

분류에서Dev

기준 당 최대 N 개의 레코드를 선택하는 SQL 쿼리

분류에서Dev

마스터 필드 값을 만들기 위해 동일한 테이블에서 조인 / 하위 쿼리를 사용하는 SQL Server 선택 쿼리

분류에서Dev

쿼리를 실행하여 테이블을 기반으로 고유 레코드 찾기

Related 관련 기사

  1. 1

    이전 쿼리를 기반으로 테이블에서 임의의 행을 선택하는 SQL 쿼리

  2. 2

    열 값을 기반으로하는 SQL 선택 쿼리

  3. 3

    SQL : 다른 테이블의 값을 기반으로 한 테이블에 레코드가 있는지 여부를 쿼리하는 방법

  4. 4

    SQL : 다른 테이블의 값을 기반으로 한 테이블에 레코드가 있는지 여부를 쿼리하는 방법

  5. 5

    열 값을 기반으로 단일 최상의 레코드를 선택하는 쿼리

  6. 6

    열 값을 기반으로 단일 최상의 레코드를 선택하는 쿼리

  7. 7

    다른 테이블의 열 값을 기반으로 한 테이블에서 선택하는 SQL 쿼리

  8. 8

    SQL 쿼리를 사용하여 순차적 관계를 기반으로 레코드를 선택하는 방법

  9. 9

    이름과 성을 기반으로 중복 레코드를 찾는 MYSQL 쿼리

  10. 10

    열 값을 기반으로 데이터를 가져 오는 SQL 쿼리

  11. 11

    SQL 쿼리 : 관련 테이블의 모든 레코드가 특정 속성 값을 갖는 레코드를 선택하는 방법

  12. 12

    선택 옵션을 기반으로하는 SQL 쿼리

  13. 13

    두 열에서 ID는 같지만 값이 다른 레코드를 선택하는 SQL 쿼리

  14. 14

    열을 기반으로 레코드를 선택하지만 해당 열의 모든 값을 표시하는 SQL

  15. 15

    값을 기준으로 레코드를 병합하는 쿼리

  16. 16

    SQL 쿼리 조언-중복을 기반으로 레코드 업데이트

  17. 17

    등급이있는 레코드를 선택하기 위해 SQL 쿼리에서 계산

  18. 18

    테이블의 다른 조건을 기반으로 레코드 쿼리 (레코드 선택)

  19. 19

    데이터 프레임의 값을 기반으로 여러 AND 문을 사용하는 R의 SQL 쿼리

  20. 20

    다음 레코드 값을 기반으로하는 GS 쿼리 레코드

  21. 21

    이전 쿼리를 기반으로 선택 쿼리 수행

  22. 22

    첫 번째 테이블의 정보를 기반으로 두 번째 테이블을 선택할 때 SQL 쿼리 구문을 지정하는 방법

  23. 23

    필드의 일부 값을 기반으로 값을 가져 오는 SQL 쿼리

  24. 24

    매개 변수 선택을 기반으로 보고서를 생성하는 SQL 쿼리

  25. 25

    레코드 이동을 기반으로 데이터를 검색하는 Oracle SQL

  26. 26

    테이블 값을 기반으로 동적 SQL 쿼리를 작성하는 방법

  27. 27

    기준 당 최대 N 개의 레코드를 선택하는 SQL 쿼리

  28. 28

    마스터 필드 값을 만들기 위해 동일한 테이블에서 조인 / 하위 쿼리를 사용하는 SQL Server 선택 쿼리

  29. 29

    쿼리를 실행하여 테이블을 기반으로 고유 레코드 찾기

뜨겁다태그

보관