'프로그래밍/기타'에 해당되는 글 53건

  1. 2006.02.11 최대값얻기.. top 1 과 max()
  2. 2006.02.08 ' 문자를 처리하자
  3. 2006.01.24 db에러 체크 BeginTrans
img_TBL 테이블에 인덱스 선언이 되어있지 않은 num 이라는 컬럼의 최대값을
알고 싶을때 아래와 같은 두가지 경우를 생각할수 있습니다.
(물론 더많을수 있겠지만 제가 아는 한도내에서...)

select top 1 num from img_TBL order by num desc
-----------------------------------------------------------------
select max(num) from img_TBL

레코드 갯수는 약 5000개가 있고 num컬럼의 값들은 유니크하지 않습니다.

결과적으로 첫번째 쿼리의 최종비용은 0.175 이고
두번째 쿼리의 최종비용은 0.0176 입니다.

무려 10배 차이가 납니다.
원인은 바로 첫번째 쿼리의 처리를 하기위하여 Sort/TopN Sort 작업의 I/O 비용과 cpu 비용이
0.01과 0.09 정도가 나옵니다.
반면 두번째 쿼리는 MAX 값을 구하기 위하여 거의 비용이 들지 않습니다.(I/O 비용 0, CPU 비용 0.000487)

그러므로 두번째 쿼리를 강추합니다.~!

물론 num 이라는 컬럼이 인덱스화 되어있다면 첫번째 쿼리가 근소한 차이로 더 비용이 좋습니다.
Posted by 빨강토끼
자바스크립트를 하다보면 ' 나 " 등의 문자를 그대로 표현해야되는 경우가 있다.

예를 들어서 var = "what's up?";
등의 경우가 있는데

어쩔수 없이
var = 'what's up?';
으로 작성해야되는 경우가 있을수 있다.

즉 문자열을 ' 나 " 로 범위를 선언하는데 그안에 같은 문자를 표현해야하는경우

당연히 브라우저는 var = 'what' 까지만 인식하고 s up? 에서 에러가 날것이다.

이럴경우 문장안의 '라는 문자를 ' 로 바꾸면 된다.
" 도 마찮가지로 " 라고 선언하면
var = 'What's up?' 라고 표현되며

' 이나 " 는 단순히 문자열안의 문자로 해석하여서 제대로된 동작을 기대할수 있다.

당연히 페이지에 보여지는 문장은 what's up? 이라고 표현된다.

Posted by 빨강토끼
웹프로그래밍이나 일반 프로그래밍에서
db 트랜잭션을 통하여(BeginTrans, rollBackTrans, commitTrans 등)
만일 에러가 생기면 롤백을 하고 아니면 커밋을 하는 프로그래밍을 하고자 합니다.

이때 분명 트랙잭션 프로그래밍을 했는데 에러메시지를 나타내며 트랙젝션이 되지
않는 경우가 99%입니다.

on Error resume next

문제는 이것을 맨처음에 넣어주어야됩니다.

db에러가 나면 당연히 에러상태가되고 트랜잭션이고 머고 없습니다.

위와 같은 코드를 넣어주면 에러가 나도 에러상태를 유지하면서 다음 단계로
주욱 실행해 나가게 되고 최종단에서 rollBackTrans 를 실행하게 됩니다.

간단한 예제 코드입니다.

on Error resume next

set adoCn=server.CreateObject("ADODB.Connection")
adoCn.open strConnect
adoCn.BeginTrans
adoCn.Execute strSQL

if adoCn.errors.count>0 then
  adoCn.rollBackTrans
else
  adoCn.commitTrans
end if

set adoCn=nothing


만일 위에 것이 안된다고 하면
If db.Errors.Count <> 0 Then 을
If Err.number <> 0 then 이것으로 바꿔보세요.


아래는 참조입니다.

분산 트랙잭션 오류입니다.(0x8004D00A)   
Posted by 빨강토끼