홈>
SQL 서버는 EF
.First()
를 번역 할 수 있습니다
기능
TOP(1)
사용
. 그러나 Entity Framework의
.Last()
를 사용할 때
함수에서 예외가 발생합니다. SQL Server는 명백한 이유로 이러한 기능을 인식하지 못합니다.
내림차순으로 정렬하고 첫 번째 해당 줄을 가져 와서 문제를 해결했습니다.
var v = db.Table.OrderByDescending(t => t.ID).FirstOrDefault(t => t.ClientNumber == ClientNumberDetected);
이것은 단일 쿼리로 수행하지만 쿼리하기 전에 전체 테이블 (백만 행)을 정렬합니다 ...
이 기술을 악용하면 속도 문제가 있다고 생각할만한 이유가 있습니까?
유사한 것이 있다고 생각했지만 ... 두 가지 쿼리가 필요합니다 :
int maxID_of_Client = db.Where(t => t.ClientNumber == ClientNumberDetected).Max(t => t.ID);
var v = db.First(t => t.ID == maxID_of_Client);
클라이언트의 최대 ID를 검색 한 다음이 ID를 사용하여 클라이언트의 마지막 행을 검색합니다.
두 번 쿼리하는 것이 더 빠르지 않은 것 같습니다 ...
수백만 개의 데이터를 정렬하지 않고이를 최적화하고 단일 쿼리를 사용하는 방법이 있어야합니다.
내가 이해하지 못하는 것이 없다면, 나는이 문제에 대해 처음으로 생각하지 않았으며 그것을 위해 그것을 해결하고 싶다!
미리 감사합니다.
- 답변 # 1
관련 자료
- mysqli_connect 및 PHP 74를 사용하여 MySQL 5336 공유 서버에 연결할 수 없지만 PHP 71을 사용하여 작동하는 이유는 무엇입니까?
- 백분율을 계산하는 동안 집계 함수와 함께 Over ()를 사용하는 SQL Server
- python - discordpy를 사용하여 discord 서버의 모든 구성원 목록을 가져 오려면 어떻게해야합니까?
- odoo - 서버 작업을 사용하여 FORM VIEW를 여는 방법은 무엇입니까?
- join - SQL Server는 COUNT ()를 사용하는 동안 모든 레코드를 표시합니다
- average - SQL Server는 창 함수를 사용하여 AVG () 계산
- PHP를 사용하여 FTP 서버에서로드 된 XML에 새 노드를 저장하는 방법
- SQL Server에서 한정 row_number를 사용하여 데이터를 필터링하는 방법
- Entity Framerwork Core를 사용하여 가상 컬렉션에 구성원 추가
- python - 텔레 봇을 사용하여 서버에서 파일을 보내는 방법은 무엇입니까?
- Where 절에서 비트 열 사용 SQL Server
- networking - ubuntu 서버 2004를 라우터로 사용 - 클라이언트에 인터넷 없음
- typescript - Angular를 사용하여 서버에 게시 요청하기
- android - rxJava를 사용하여 AWS 서버에 여러 이미지 업로드
- python (python -m httpserver)을 사용하여 로컬 서버에서 html 파일을 열려면 어떻게해야합니까?
- linux - SSH가 항상 서버에서 허용하는 첫 번째 키를 사용하는 이유는 무엇입니까?
- c# - 더 나은 성능을 위해 ParallelForEach 루프를 사용하여 SFTP 서버에 파일을 업로드하는 방법
- SPA React App을 호스팅하는 단순한 프레임 워크없는 NodeJS 서버
- java - CrudRepositorysave (Entity)를 사용하여 spring-data-jdbc를 사용하여 사전 정의 된 @ID 필드가있는 엔티티 삽입
관련 질문
- c# : Entity Framework (Scaffolding)에서 데이터베이스를 사용할 때 hasKey.hasname ( "PK_123ABC")은 무시 되었습니까?
- c# : dbnull을 null 열 값으로 일치시킬 수 없습니다
- c# : 하위 쿼리는이 컨텍스트에서 허용되지 않습니다. EF 코어에서는 스칼라 식 만 허용됩니다
- c# : EF LINQ 표현식에 SQL 쿼리 (patindex가있는)
- SQL이 c#에 테이블이 있는지 확인하십시오.
- c# : 컨트롤러 MVC에서 JSON 경로를 반환합니다
- c# : ASP.NET MVC의 엔티티 연결 문자열
- c# : LINQ 쿼리에서 문자열에서 숫자를 추출하고 IT DB 측의 순서를 지정하는 방법
- c# Inherent 객체를 초기화하고 오류를 가져 오는 "엔티티가 LINQ에 엔티티 쿼리로 구성 할 수 없습니다"
- c# : Visual Studio 2017에서 저장 프로 시저를 EDMX에 추가 할 때 복잡한 유형이 업데이트되지 않는 이유는 무엇입니까?
이 질문을 주도하는 가정은 주문 절이없는 결과 집합이 예측 가능한 순서로 DB에서 다시 나온다는 것입니다.
실제로 SQL에서 나온 결과 집합에는 암시적인 순서가 없으며 어떤 것도 가정해서는 안됩니다.
따라서 결과는
실제로 결정되지 않았습니다.
어쨌든 주문을하지 않고 처음 또는 마지막을 복용하든 아무 의미가 없습니다.
이제 LINQ에 주문 절을 추가하면 SQL은 어떻게됩니까? 그것은 비슷한 것입니다 ...
또는 내림차순/마지막 경우
SQL의 POV와는 큰 차이가 없으며 DB는 이러한 종류의 쿼리에 최적화됩니다. 색인은 어느 방향 으로든 스캔 할 수 있으며 위의 각 쿼리 비용은 동일합니다.
TL;DR:
괜찮아.