2012-09-03 2 views
1

많은 데이터 (10000 개 이상)가있는 mysql에 테이블이 있는데, 모든 데이터를 Java로로드 한 다음 그래픽을 플로팅하는 것이 꽤 느립니다. 나는 그래픽을 그리기 위해 단지 몇 가지 포인트를 얻고 싶지만 어떻게 될지 모른다. 10 또는 100 행마다 데이터를 가져 오는 것과 같습니다. 어떤 생각?플롯 할 데이터 샘플 얻기

+3

청크에 대한 쿼리 당신은 쉽게 모든 음모 수 있습니다. 또는 LIMIT 개의 행을 쿼리합니다. – duffymo

답변

2

당신이 자동 증가 필드는 단순히 (모드) 나머지를 사용하여 매 10 또는 100 행을 선택할 수있는 경우 :

SELECT actor_id, last_name FROM actor WHERE MOD(actor_id, 10) = 0; 

당신은 또한 각 행에게 행 번호를 줄 수있는 그에 결과를 제한 :

SELECT actor_id, last_name, row_number FROM 
(SELECT actor_id, last_name, @currentRow := @currentRow + 1 AS row_number FROM 
actor JOIN (SELECT @currentRow := 0) Row) Data 
WHERE MOD(row_number, 10) = 0; 

멋진 행 번호 기술은 Daniel Vassallo의 것입니다. With MySQL, how can I generate a column containing the record index in a table?

행운을 빕니다 :)

+0

두 답변 모두 나를 도왔습니다. rownum이 내가 모르는 멋진 해결 방법이기 때문에 당신을 받아 들일 것입니다, 감사합니다! – Montolide

1

또는 당신이 당신의 전체 간격 분 (x)를 나눌 수 있습니다 - N 간격으로 최대의 (X)와 간격 당 하나의 평균 점을 얻는다. 이 같은 예를 들어 (여기에 10 개 간격) 뭔가 :

select round(([email protected])/@step),avg(y) from PLOT_DATA, 
(select @minx:=min(x), 
     @maxx:=max(x), 
     @intervals:=10, /*separated intervals count*/ 
     @step:=(@[email protected])/@intervals 
    from PLOT_DATA) t 

group by round(([email protected])/@step) 
order by round(([email protected])/@step)