Repo.preload
에 의해 수행 된 쿼리에서 왜 order by
절이 있는지 알고 싶습니다. 실행order by Repo.preload
App.Repo.get(Sopitas.Continent, 1) |> App.Repo.preload(:countries)
쿼리는 다음과 같습니다
[debug] QUERY OK source="continents" db=0.4ms
SELECT c0.`id`, c0.`name`, c0.`sm_id`, c0.`inserted_at`, c0.`updated_at`
FROM `continents` AS c0 WHERE (c0.`id` = ?) [1]
[debug] QUERY OK source="countries" db=3.5ms decode=1.1ms
SELECT c0.`id`, c0.`sm_id`, c0.`name`, c0.`continent_id`, c0.`inserted_at`, c0.`updated_at`, c0.`continent_id`
FROM `countries` AS c0 WHERE (c0.`continent_id` = ?)
ORDER BY c0.`continent_id` [1]
내가 지금까지 내가 이해로 order by
절은 쿼리의 실행을 처리 할 시간을 추가하기 때문에이 부분은 이해합니다. 나는 order by
을 피하기를 원합니다.
는 정말 실행 시간에 도움이됩니까? 어쩌면 당신은 행이 많을 때 DB 엔진에 더 좋을 것입니다. 사실입니까? 조건부로 행을 검색 할 때 프로세스의 해당 부분에 익숙하지 않습니다. 그래서, 올바르게 이해한다면, 필터링하는 필드에 의해 행을 먼저 정렬 한 다음 행을 검색하는 것이 좋습니다. –
그것은 크게 기본 DB 엔진에 따라 다르지만 아무런 해를 끼치 지 않습니다. 아마도 이것이 Ecto 제작자가 모든 것을 위해이 '주문'을 하드 코딩하기로 결정한 이유 일 것입니다. – mudasobwa