1.

SELECT TOP 1 '데이터'
  FROM '테이블'
 WHERE 1=1
 ORDER BY '데이터'

 

1번의 경우 데이터를 전체 조회 후 ORDER BY로  거르기 때문에 속도가 느려진다.

 

2. 

SELECT MIN('데이터') AS '데이터'
FROM '테이블'

 

2번의 경우 SELECT에서 검색할 조건을 명확히 정해주어 속도가 1번보다 확연히 빠르다.

(전체 조회로 가져오는 것이 아니기 때문)

'DB' 카테고리의 다른 글

DB 시퀀스 없을 시  (0) 2021.05.22
MySQL 컬럼 추가, 삭제, 수정  (0) 2020.08.05

 

int[] arr = new int[] {2, 5, 3, 6, 8, 1}

for(int i=0; i < arr.length; i++) {		㉠
	for(int j=0; j < arr.length-1-i; j++) {		㉡
    	if(arr[j] > arr[j+1]) {		㉢
        	int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

 

㉠ 

- 6번 반복

 

for(int j=0; j < arr.length-1-i; j++) 

- 조건을 arr.length-1-i와 같이 작성한 이유는 배열의 길이는 6이지만 배열은[5]이기 때문이다.

(j는 최대 4를 넘을 수 없다.)

 

- 우리는 arr[0]과 arr[1]    ......    arr[4] arr[5]     2개씩 비교 할 것이다.

 

- 2개씩 비교하러면 arr[j] > arr[j+1]  이런식으로 비교해야 하는데 j가 5가되버리면?

arr[5] > arr[5+1]

이렇게 비교해야하는데 우리의 arr 배열은 길이가 6이다.

 

arr[5+1]과 같이 되어버리면 배열의 길이가 7이 되어버리기 때문에 outBound 에러가 발생한다.

 

 

첫 for문의 주인공인 i는 어떤 역할을 할까

 

- 안쪽 for문에서 한바퀴를 돌면 이미 제일 큰 숫자는 맨 오른쪽에 자리하고 있을것이다.

- 그렇기에 마지막 배열까지 비교를 할 필요가 없다.

 

 

 

 

String클래스에서는 equals메서드를 오버라이딩하여 문자열의 내용을 비교할 수 있다.

 

하지만, StringBuffer클래스는 equals메서드를 오버라이딩하지 않아서 

 

StringBuffer클래스의 equals 메서드를 사용해도 등가비교연산자(==)로 비교한 것과 같다.

 

하지만 toString()을 이용하여 할 수 있는데,

 

toString()은 오버라이딩이 되어 있기에 StringBuffer 인스턴스에 toString()을 호출하면 담고있는 문자열을 String으로 반환한다.

 

그래서 StringBuffer 인스턴스에 담긴 문자열을 비교하기 위해서는 StringBuffer인스턴스에

toString()을 호출해서 String인스턴스를 얻은 다음, 여기에 equals 메서드를 사용해서 비교한다.

 

String a = ab.toString();
String b = bc.toString();

System.out.println(a.equals(b); // true

 

+ Recent posts