복붙노트

[SQL] 어떻게 MySQL의 전망의 일을?

SQL

어떻게 MySQL의 전망의 일을?

나는 기본적으로 자동에 거래 될 새 테이블을 만드는 중이라서 뷰를 만들 때 때 변화를 조인 테이블 중 하나에 데이터; 그 맞습니까?

또한 내가 왜 내보기에 하위 쿼리를 사용할 수 없습니다?

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.차이점은 :

    차이점은 :

    일부 소위 -가 아니라에서, 일부 -보기 위해 당신은 단지 어디에서 하위 쿼리를 가질 수 있습니다

    CREATE VIEW v AS SELECT * FROM foo WHERE id IN (SELECT id FROM bar) 
    

    겠습니까 작업 - 그러나 동시에 당신은 기본 테이블 뷰 '를 통해 "읽기 전용보기 ... 하나의 테이블에 대한 간단한보기를 업데이트 할 수 있도록 할 얻을

  4. from https://stackoverflow.com/questions/2878227/how-do-mysql-views-work by cc-by-sa and MIT license