내 질문은 T-SQL, SQL Server 환경에 뿌리를두고 있지만 그 범위는이 기술에만 국한되지 않습니다. 필자는 기존의 뷰, 스토어드 프로 시저 및 새로운 것들을 디자인 할 수있는 매우 복잡한 비즈니스 로직을 가진 데이터베이스 작업을하고 있습니다. 서로 다른 쿼리 나 그 중 일부의 비교를 통해 다른 작업으로 같은 작업을 수행하는 섹션이 있다는 강한 느낌을 갖지만 전체 엉망을 리펙토링하는 것은 물론 그 느낌이 더 필요합니다. 그래서 나는 이임을 입증하는 방법을 결정하려고하는데 두 문장이 동등한 것입니다.쿼리 동등성 평가
분명하지만 약한 응답은 두 개의 쿼리 A와 B가 동일한 레코드 세트를 생성한다는 것을 확인할 수 있습니다. A가 B의 하위 집합이고 B가 A의 하위 집합 인 경우 동일한 레코드 집합입니다. 물론 레코드 세트가 쿼리가 아니기 때문에 결과가 데이터 및 특정 매개 변수 값에 의존 할 수 있기 때문에 이것이 좋은 아이디어라고 확신하지는 못합니다. 내 질문은 : 두 가지 다른 쿼리의 동등성을 증명하는 방법이 있습니까? 데이터베이스에 의해 수행되는 최적화가 이에 따라 작동해야하기 때문에 나는 그렇다고 말할 것이다. 누군가 나에게 문서 나 책에 대한 포인터를 제공 할 수 있습니까? 등가성을 증명할 일반적인 방법이 없다면, 직업을 수행하는 효과적인 발견 적 방법에 따라 수행 된 회귀 테스트를 기반으로하는 영리한 접근이 있습니까?
나중에 편집 : 관계형 대수를 사용하여 쿼리를 직접 (리버스 엔지니어링) 리버스 엔지니어링하면 다른 쿼리 및/또는 컴퓨터 대신 쿼리 동등성을 평가하는 뛰어난 방법이 될 수 있습니까? 이 "역 엔지니어링"을 수행하는 데 도움이되는 자동화 도구가 있습니까?
덕분에 당신은 두 쿼리의 실행 계획을 확인할 수 있습니다
http://stackoverflow.com/questions/4868364/how-to-prove-2-sql-statements-are-equivalent 및 http://dl.acm.org/citation.cfm?id=111212&dl= –