[SQL] 어떻게 MySQL의 전망의 일을?
SQL어떻게 MySQL의 전망의 일을?
나는 기본적으로 자동에 거래 될 새 테이블을 만드는 중이라서 뷰를 만들 때 때 변화를 조인 테이블 중 하나에 데이터; 그 맞습니까?
또한 내가 왜 내보기에 하위 쿼리를 사용할 수 없습니다?
해결법
-
==============================
1.뷰는 테이블처럼 작동하지만, 테이블이 아닙니다. 그것은 결코 존재하지 않는다; 그것은 당신이 뷰 이름을 참조 할 때 실행되는 경우에만 준비된 SQL 문입니다. IE :
뷰는 테이블처럼 작동하지만, 테이블이 아닙니다. 그것은 결코 존재하지 않는다; 그것은 당신이 뷰 이름을 참조 할 때 실행되는 경우에만 준비된 SQL 문입니다. IE :
CREATE VIEW foo AS SELECT * FROM bar SELECT * FROM foo
... 실행하는 것과 같습니다 :
SELECT x.* FROM (SELECT * FROM bar) x
mysqldump는은 행이 뷰에 삽입 포함하지 않습니다 ...
즉, 슬프게도, 디자인 (의심이기는하지만)입니다. 문서화 된 MySQL의 전망에 대한 많은 제한이있다 : http://dev.mysql.com/doc/refman/5.0/en/create-view.html
아니. 테이블은 데이터가 더 빨리 (삽입 / 업데이트에 대한 몇 가지 비용) 검색 할 수 있습니다 관련 인덱스를 가질 수 있습니다. MySQL은 오직이 게임에 매우 늦게, V5 IIRC에 시작되는 (제한된보기 기능을 제공 지원하지 않습니다 깜짝 안하는 - 일부 데이터베이스는 인덱스으로 적용될 수있는 뷰는 뷰를 "구체화"지원 ).
뷰가 파생 테이블이기 때문에, 뷰의 성능 만가 내장되어 쿼리 좋은 같습니다. 해당 쿼리 짜증 경우, 성능 문제는 뷰를 쿼리 할 때 즉, 말했다 ... 눈덩이 단지 것 - 만약 절 (IE 기능에 싸여되지 않은에서보기 열 참조 : WHERE하지 LIKE ..., v.column LOWER (t.column) LIKE는 ...), 최적화 프로그램이 원래 쿼리에 술어라는 기준 ()을 밀어 수 있습니다 WHERE - 빨리 만들기.
-
==============================
2.(내 검색 오라클과 MS가이를 지원하는 않는 것을 나타내는 것 때문에, 놀랍게도) 또한 같은 문제에 달렸다.
(내 검색 오라클과 MS가이를 지원하는 않는 것을 나타내는 것 때문에, 놀랍게도) 또한 같은 문제에 달렸다.
내 마지막 뷰에 대한 두 개의 추가 뷰를 생성하여 (비 사용할 입증 될 때까지, 지금은 적어도) 나는이 제한 주위에 얻을.
예:
CREATE VIEW Foo1 AS SELECT * FROM t ORDER BY ID, InsertDate DESC CREATE VIEW Foo2 AS SELECT * FROM Foo1 GROUP BY ID CREATE VIEW Foo AS SELECT * FROM Foo2 ORDER BY ID
위의 예는 기본적으로 모든 수정을 포함하는 임시 테이블 테이블 't'를 갖는다. 내 '푸'(보기)는 기본적으로 각 레코드의 내 대부분의 현재 버전의 간단한이다. 지금은 작업 괜찮아 보인다!
최신 정보:
이 MySQL을 5.1의 또 다른 버그인지는 모르겠지만, 위의 예는 실제로 작동하지 않습니다! 'FOO1'작품 기대하지만, 'FOO2는'이전에 내 최종 결과가 의도하지 무엇 때문에 그룹화에 순서를 무시 보인다. 나는 'ASC'(놀랍게도)에 대한 'DESC'을 변경하면 난 같은 결과를 얻을.
또한, 경우는 17.5.1를 참조하십시오. 보기 구문 섹션, 그것은 명확하게 진술한다 :
나는 5.6에 내 데이터베이스를 업데이트하고 다시 시도거야!
-
==============================
3.차이점은 :
차이점은 :
일부 소위 -가 아니라에서, 일부 -보기 위해 당신은 단지 어디에서 하위 쿼리를 가질 수 있습니다
CREATE VIEW v AS SELECT * FROM foo WHERE id IN (SELECT id FROM bar)
겠습니까 작업 - 그러나 동시에 당신은 기본 테이블 뷰 '를 통해 "읽기 전용보기 ... 하나의 테이블에 대한 간단한보기를 업데이트 할 수 있도록 할 얻을
from https://stackoverflow.com/questions/2878227/how-do-mysql-views-work by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] (SQL에서) COMMIT 문은 지금까지 실패 할 수 있습니까? 어떻게? (0) | 2020.06.09 |
---|---|
[SQL] 어떻게 어떤 행을 반환하지 않는 쿼리에 대한 기본 행을 설정하는 방법? (0) | 2020.06.09 |
[SQL] 일 문 사이 JPQL SELECT [폐쇄] (0) | 2020.06.09 |
[SQL] SQL 테이블 별칭 - 좋은 또는 나쁜? [닫은] (0) | 2020.06.09 |
[SQL] 데이터베이스에서 고유 인덱스 컬럼 값을 스왑 (0) | 2020.06.09 |