database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 28110 게시물 읽기
No. 28110
use 쿼리 꼭 필요한가요?
작성자
신정욱(donsigner)
작성일
2009-03-30 10:57ⓒ
2009-03-30 10:58ⓜ
조회수
4,997

use 쿼리 보내서 디비 선택하고, select 할때 선택된 디비 안에 있는 테이블 대상을 쿼리를 날리는데,

use DB; select * from TABLE; 이나
select * from DB.TABLE; 이나 결과는 같은데요.

굳이 use DB; 를 할 필요가 있는건가요? 

어떤 성능상의 차이가 있는지... 아니면 다른 이유가 있는지...

아시는 분 계시면 답변좀 부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

결론적으로는 별차이 없다가 저의 의견입니다.

SQL Parsing 시에 해당 객체의 서버정보를 확인하나 미리 서버정보를 획득한 상태에서 데이터를 

읽어오나 차이가 거기서 거기겠네요. 있다고 해도 무시할만한 수준이 아닐까합니다.



단지, 쿼리 패스를 전역적으로 가져가느냐, 지역적으로 가져가는냐의 차이와 네트웍 트래픽 정도의 

차이가 아닐까요?


1. USE [DB명];
선언된 이후의 모든 쿼리에서 참조하는 객체는 특별한 언급이 없는한 [DB명]의 데이터 딕셔너리를 확인
하겠다.
=> 왠지 프로그램에서 전역 변수를 선언한 느낌이랄까요...

2. SELECT * FROM [DB명].TABLE
SQL Parsing Time에 TABLE은 [DB명]의 데이터 딕셔너리에서 확인하겠다.
=> 이전이나 이후나 어떤 쿼리가 있는지는 모르겠다만 현재 쿼리의 객체는 [DB명]에 있다.


네트웍 트래픽의 차이라고 한다면
쿼리가 아주 많아진다는 가정하에 

USE DB명;
SELECT * FROM TB1;
SELECT * FROM TB2;
SELECT * FROM TB3;
SELECT * FROM TB4;
...

SELECT * FROM TBn;


이것이

SELECT * FROM DB명.TB1;
SELECT * FROM DB명.TB2;
SELECT * FROM DB명.TB3;
SELECT * FROM DB명.TB4;
...

SELECT * FROM DB명.TBn;

보다 "DB명." 요 서버명 써주는 것을 덜 써주게 되니까 네트웍에 전송되는 쿼리 스트링 만큼의 바이트

수를 세이브하게 되는 결과가 된다는 것이죠.

물론, 이정도로까지 쓸일은 없을 것이고 이것도 프로시저로 대체하게 되면 그다지 -_-;;

게다가 무시할 정도의 미미한 차이라는 것....


저의 생각은 그렇습니다.

님이 2009-03-30 17:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
28113기본 int형은 왜 11비트 인가요? [2]
김지현
2009-03-30
5306
28112숫자가 시작하는위치 취득. [2]
mossmin
2009-03-30
5297
28111쿼리 개선에 대해 문의 [2]
이동일
2009-03-30
5463
28110use 쿼리 꼭 필요한가요? [1]
신정욱
2009-03-30
4997
28109Incorrect key file for table 'board'; try to repair it [1]
이창우
2009-03-30
5016
28108injection 공격 의심여부
이성준
2009-03-28
5333
28107[질문]max_user_connections에 관해... [2]
장춘진
2009-03-26
5740
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다