2011-08-23 5 views
2

deleted 필드가있는 products 테이블이 있다고 가정합니다. 제품이 삭제되면 실제 레코드를 삭제하는 대신 deleted을 1로 설정하기 만하면됩니다. 이렇게하면 일상적인 사용에 필요하지 않은 많은 양의 데이터가 생깁니다. 삭제 된 제품 만 표시하고이보기 대신 products 테이블을 조회하는 뷰를 만들면 내 앱의 성능이 향상됩니까?MySQL보기를 사용하여 성능 향상

+1

그냥 생각 : 왜 삭제 된 테이블을 만들고 삭제할 때마다 메인 테이블에서 삭제 된 테이블로 제품을 옮기지 않습니까? 따라서 주 테이블에는 활성 제품 만 있습니다. – Andrey

+1

추천 도서 : http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/ –

답변

6

보기를 사용하더라도 성능이 크게 향상되지 않습니다.
그러나보기의 구문이 고정되어 있으므로 첫 번째 선택 후 쿼리 결과가 캐시됩니다.

그러나 쿼리의 결과는 더 이상 인덱싱되지 않으므로 뷰가 많은 행을 선택하고 뷰에 대해 선택하면 실제로 느려질 수 있습니다.

대체


이 대안은 별도의 deleted_products 테이블에 삭제 된 제품 행을 이동할 수 있습니다.
또는 테이블을 deletedundeleted 부분으로 분할 할 수 있습니다.

링크 : 당신은 부드러운 삭제 수행하고 주어진 테이블에 대해 SELECT들에 대한 성능에 대해 물어 묘사
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

1

가능성이 낮습니다. 테이블에 쿼리가 표시됩니다.

그러나 응용 프로그램을 좀 더 쉽게 개발할 수 있습니다.

0

. 나는 다른 포스터들에 동의한다. SELECT에서 얻는 성과는 최소한이지만 DELETE가 비싸므로 전체 시스템의 경우이 전략으로 더 나을 것이다. 삭제를 많이하고 소프트 삭제를 수행하는 경우 주기적으로 정리하면 전반적인 성능이 향상됩니다.