2008-09-10 2 views
4

가능한 중복 :
SQL Query to get latest price효율적인 방법 SQL은 MySQL 데이터베이스에서 최신 항목을 선택합니까?

나는 주가의 역사를 포함하는 데이터베이스가 있습니다. 나열된 모든 주식에 대해 가장 최근의 가격을 선택하고 싶습니다. PostreSQL은 DISTINCT ON 문을 가지고있어 이상적으로 이상적입니다.

테이블 열은 name, closingPricedate입니다. namedate이 함께 고유 색인을 구성합니다.

쉬운 (매우 uneffective) 방법은 내가 찾은

SELECT * FROM stockPrices s 
WHERE s.date = 
(SELECT MAX(date) FROM stockPrices si WHERE si.name = s.name); 

훨씬 더 나은 방법이

SELECT * 
FROM stockPrices s JOIN (
    SELECT name, MAX(date) AS date 
    FROM stockPrices si 
    GROUP BY name 
) lastEntry ON s.name = lastEntry.name AND s.date = lastEntry.date; 

이다 이것은 무엇을 할 수있는 효율적인 방법이 될 것입니다? 어떤 인덱스를 만들어야합니까? 의

중복 :
SQL Query to get latest price

답변

0

내가 두 번째 접근 방식은 매우 효율적이라고 생각하십시오. 그게 무슨 문제 야?

이름과 날짜에 색인을 추가해야합니다.

+0

성능면에서 필요한 경우 색인을 추가해야합니다. 열 주식과 일일 데이터 일 경우, MySQL은 테이블 스캐닝에 비교적 능숙합니다. –

+0

데이터가 거의 없다면 효율적인 방법을 요구하지 않을 것입니까? 첫 번째, 명백한 접근조차도 충분할 것입니다. –

관련 문제