Q&A

  • "SQL문" 발행의 차이점에 대한 ?


SQL문을 발행하여 DB의 내용을 읽어 오는데,궁금한 내용이

있어서 고수님의 조언을 듣고자 이렇게 글을 올립니다.



▶ SQL 문 ◀

SELECT * FROM FILE WHERE DATE = :PDATE;



※ 위에서 실행되는 "SQL문"에서 실행 모드에서 다시 조건을

받아들여 "SQL문"을 실행하는데,다음의 두가지의 차이점을

알고 싶습니다.



1. Query1.ParamByName('PDATE') AsString := Trim(text1.text);

Query1.open;



2. With Query1 do

Begin

Active := True;

Close;

Sql.clear;

Sql.add("Select * from file where date = Trim(text1.text));

open;

End;



※ 다음의 1,2번의 차이점에 대하여 알고 싶습니다.

프로그램을 작성하는 경우에 어떠한 방법이 더 효율적인지?

알고 싶습니다.

※ 좋은 답변을 기다리고 있겠습니다.



2  COMMENTS
  • Profile
    신인재 1999.07.08 03:56
    음......



    1번은 쿼리에 SQL을 넣고 조건을 파라메터로 처리 하셨고

    2번은 전체 SQL을 쌔려 넣으셨군요....



    이것은 한마디로 별반 차이가 없습니다...성능적인 측면으로 말하자면 말이죠.

    여기서 성능을 향상시키려면 디비와 어플리케이션과의 메세지교환을

    최소한하는 것이 방법입니다. 예를 들어 꼭 가능한한 WHERE 을 주어

    필요한 데이타만 불러 온다던지 인덱스파일을 잘 활용한다던지 하는

    것입니다. 또한 쿼리를 이용하실때 Prepare메소드를 이용하시면

    델파이가 내부적으로 옵티마이징을 하므로 성능향상을 기대 할 수 있습니다.



    아참, 그리고 With문을 이용하는 것은 클래스를 기반으로하는

    델파이의 권장코딩 방법입니다.

    따라서 2번에 의한 코딩이 정석이라 할 수 있겠습니다...







    김서영 께서 말씀하시기를...

    >

    > SQL문을 발행하여 DB의 내용을 읽어 오는데,궁금한 내용이

    > 있어서 고수님의 조언을 듣고자 이렇게 글을 올립니다.

    >

    > ▶ SQL 문 ◀

    > SELECT * FROM FILE WHERE DATE = :PDATE;

    >

    > ※ 위에서 실행되는 "SQL문"에서 실행 모드에서 다시 조건을

    > 받아들여 "SQL문"을 실행하는데,다음의 두가지의 차이점을

    > 알고 싶습니다.

    >

    > 1. Query1.ParamByName('PDATE') AsString := Trim(text1.text);

    > Query1.open;

    >

    > 2. With Query1 do

    > Begin

    > Active := True;

    > Close;

    > Sql.clear;

    > Sql.add("Select * from file where date = Trim(text1.text));

    > open;

    > End;

    >

    > ※ 다음의 1,2번의 차이점에 대하여 알고 싶습니다.

    > 프로그램을 작성하는 경우에 어떠한 방법이 더 효율적인지?

    > 알고 싶습니다.

    > ※ 좋은 답변을 기다리고 있겠습니다.

    >





  • Profile
    김서영 1999.07.08 20:42


    "성능을 향상시키려면 디비와 어플리케이션과의 메세지교환" db와 프로그램의

    메세지 교환이 프로그램에서 파일을 Read하는 시점을 말합니까?





    최소한하는 것이 방법입니다

    신인재 께서 말씀하시기를...

    > 음......

    >

    > 1번은 쿼리에 SQL을 넣고 조건을 파라메터로 처리 하셨고

    > 2번은 전체 SQL을 쌔려 넣으셨군요....

    >

    > 이것은 한마디로 별반 차이가 없습니다...성능적인 측면으로 말하자면 말이죠.

    > 여기서 성능을 향상시키려면 디비와 어플리케이션과의 메세지교환을

    > 최소한하는 것이 방법입니다. 예를 들어 꼭 가능한한 WHERE 을 주어

    > 필요한 데이타만 불러 온다던지 인덱스파일을 잘 활용한다던지 하는

    > 것입니다. 또한 쿼리를 이용하실때 Prepare메소드를 이용하시면

    > 델파이가 내부적으로 옵티마이징을 하므로 성능향상을 기대 할 수 있습니다.

    >

    > 아참, 그리고 With문을 이용하는 것은 클래스를 기반으로하는

    > 델파이의 권장코딩 방법입니다.

    > 따라서 2번에 의한 코딩이 정석이라 할 수 있겠습니다...

    >

    >

    >

    > 김서영 께서 말씀하시기를...

    > >

    > > SQL문을 발행하여 DB의 내용을 읽어 오는데,궁금한 내용이

    > > 있어서 고수님의 조언을 듣고자 이렇게 글을 올립니다.

    > >

    > > ▶ SQL 문 ◀

    > > SELECT * FROM FILE WHERE DATE = :PDATE;

    > >

    > > ※ 위에서 실행되는 "SQL문"에서 실행 모드에서 다시 조건을

    > > 받아들여 "SQL문"을 실행하는데,다음의 두가지의 차이점을

    > > 알고 싶습니다.

    > >

    > > 1. Query1.ParamByName('PDATE') AsString := Trim(text1.text);

    > > Query1.open;

    > >

    > > 2. With Query1 do

    > > Begin

    > > Active := True;

    > > Close;

    > > Sql.clear;

    > > Sql.add("Select * from file where date = Trim(text1.text));

    > > open;

    > > End;

    > >

    > > ※ 다음의 1,2번의 차이점에 대하여 알고 싶습니다.

    > > 프로그램을 작성하는 경우에 어떠한 방법이 더 효율적인지?

    > > 알고 싶습니다.

    > > ※ 좋은 답변을 기다리고 있겠습니다.

    > >

    >

    >