Relation으로 SQL 릴리즈 횟수를 억제하는 방법
Relation이란 무엇입니까?
Relation에서는 데이터베이스에 대한 문의 결과가 아니라'어떤 SQL을 발행하느냐'는 정보를 유지하고 있을 뿐 실제 SQL의 실행 결과가 필요하기 전에는 데이터베이스에 대한 접근을 하지 않는다.
이렇게 하면 데이터베이스와의 통신이 수요를 초과하는 것을 억제할 수 있다.
또한 이번 내용과는 무관하지만 사용법 검사를 위해 이 디자인도 빠질 수 없다.
왜냐하면 방법을 호출할 때 SQL이 실행된 상황에서 모든 조건을 함께 방법에 전달할 필요가 있기 때문이다.
SQL 릴리즈 횟수 억제 인스턴스
이런 모델을 예로 들자.
만약 id에서 사용자가 좋아하는 상품 1개를 추출하면 다음과 같은 방법으로 SQL의 발행 횟수를 억제할 수 있다.
product_ids = Like.where(user_id: 1).select(:product_id)
products = Product.where(id: product_ids)
where,select 방법은 모두AccetveRecord:Relation의 조회 인터페이스를 되돌려주고 첫 번째 줄은 데이터베이스에 물어보지 않습니다.두 번째 줄은 데이터베이스에 처음 물어보기 때문에 SQL의 발행을 한 번에 제어할 수 있다.
당연히 rails tutorial이죠.
14.3.3 하위 선택처럼 SQL문으로 써도 되지만 어렵게 AccctveRecord: Relation을 사용할 수 있지만 굳이 SQL문을 쓸 필요는 없을 것 같아요.
product_ids = "SELECT product_id FROM likes
WHERE user_id = 1"
products = Product.where(id: product_ids)
참고 자료
· 완벽한 루비 온 레일스
・Active Record 쿼리 인터페이스
・rails 튜토리얼 선택 왜 고속화
Reference
이 문제에 관하여(Relation으로 SQL 릴리즈 횟수를 억제하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/akhmgc/articles/765af1daf95820텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)