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 30984 게시물 읽기
No. 30984
subquery index
작성자
김하늘(gamjabcd)
작성일
2016-08-20 03:12
조회수
6,620

안녕하세요 서브쿼리 질문 드립니다

 

idx b
1 1
2 1
3 2
4 2

 

질문 1

 

SELECT 

, (SELECT COUNT(*)  FROM Table WHERE idx <= X.idx ) c

FROM Table X

원하는 결과 1

-------------------------------------------------------------

idx       b          c

1          1          1

2          1          2

3          2          3

4          2          4

ROW의 갯수가 많아지면 서브쿼리의 속도가 현저하게 느려집니다. MSSQL에서는 클러스터드 인덱스를 타는것 같은데 MYSQL에서는 안타는것 같은데

다른 방법이 있는지 궁금합니다.

 

질문 2

SELECT

 

, (SELECT COUNT(*) FROM (SELECT * FROM Table WHERE idx <= X.idx ) c

FROM Table X

위와 같은 쿼리는 MSSQL에서는 실행이 되나 MYSQL에서는 Unknown column X... 이라고 나오네요..

 

궁극적으로 원하는 결과는 idx <= X.idx 의 결과에서 row를 거듭할수록 row숫자가 늘어나잖아요?

거듭한 row중에 100개의 결과를 가지고 b=1의 갯수를 구하는 것입니다.

만약 idx <= X.idx 에 2개의 row만 가지고 b=1의 결과를 구한다 하면

 

-------------------------------------------------------------

idx       b          c

1          1          1 ( idx 1,  b = 1 합 1)

2          1          2 (idx1 b = 1 , idx2 b = 1 합 2)

3          2          1 (idx 2 b = 1 idx 3 b = 2 합 2)

4          2          0 (idx 3 b = 2, idx 4 b = 2 합 0)

의 결과가 될것입니다.

 

질문 1의 경우 원하는 결과는 나오는데 속도가 많이 느린점이며

질문 2의 경우 서브쿼리의 서브쿼리 내에 테이블 얼리어스가 인식이 안되는 문제 같습니다.

[Top]
No.
제목
작성자
작성일
조회
30989테이블 두개 결합후 최신 데이터 조회하는 쿼리 문의입니다. [1]
kevin
2016-09-10
6688
30987테이블에 값이 검색된 컬럼 찾기 도움요청 드립니다
궁금이
2016-08-31
6775
30985쿼리문의 드려요..
tripy
2016-08-22
6799
30984subquery index
김하늘
2016-08-20
6620
30983Mysql 버전확인 문의 두번째 [1]
새벽소리
2016-08-19
6580
30982mysql 버전확인 문의 [1]
새벽소리
2016-08-18
6447
30981쿼리 질문입니다. [1]
김경식
2016-08-10
6320
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다