> 백엔드 개발 > C++ > LINQ를 사용하여 데이터베이스에서 임의 행을 효율적으로 검색하는 방법은 무엇입니까?

LINQ를 사용하여 데이터베이스에서 임의 행을 효율적으로 검색하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-26 16:16:09
원래의
475명이 탐색했습니다.

How to Efficiently Retrieve Random Rows from a Database Using LINQ to SQL?

LINQ to SQL 효율적인 임의 행 검색

LINQ to SQL을 사용하여 데이터베이스에서 임의의 행을 검색할 때 클라이언트 측 필터링 및 무작위화에 의존하면 성능 문제가 발생할 수 있습니다. 다음 방법은 특정 기준과 일치하는 임의의 행을 검색하는 효율적인 방법을 제공합니다.

시뮬레이션된 사용자 정의 함수(UDF) 사용

중소형 테이블의 경우 모의 UDF를 사용하여 데이터베이스 수준에서 무작위 작업을 수행할 수 있습니다. 데이터 컨텍스트에서 부분 클래스를 정의하고 다음 메서드를 추가합니다.

<code class="language-csharp">partial class MyDataContext {
     [Function(Name="NEWID", IsComposable=true)] 
     public Guid Random() 
     {
         throw new NotImplementedException(); 
     }
}</code>
로그인 후 복사

이 UDF는 실제로 C# 코드로 구현되지는 않지만 SQL Server에서 무작위 순서 지정을 수행하는 데 사용됩니다. 조건에 따라 임의의 행을 검색하려면 다음 쿼리를 사용하십시오.

<code class="language-csharp">var cust = (from row in ctx.Customers
           where row.IsActive // 您的筛选条件
           orderby ctx.Random()
           select row).FirstOrDefault();</code>
로그인 후 복사

개수 기반 방법

큰 테이블의 경우 개수 기반 접근 방식이 더 효율적일 수 있습니다. 작동 방식은 다음과 같습니다.

  1. qry.Count()을 사용하여 총 행 수를 계산합니다.
  2. 0 범위에서 -1을 계산하는 임의 인덱스를 생성합니다.
  3. 임의의 인덱스에서 행을 검색하려면 qry.Skip(index).FirstOrDefault()을 사용하세요.

이 방법에는 데이터베이스에 대한 두 번의 왕복이 포함되지만 임의 정렬 기능을 사용하는 것보다 테이블 크기에 따라 더 잘 확장됩니다.

위 내용은 LINQ를 사용하여 데이터베이스에서 임의 행을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿