Ich würde gerne in den Abfragen von einem Repo.preload
, warum gibt es einen order by
Klausel.Bestellung von in Repo.vorladungen
App.Repo.get(Sopitas.Continent, 1) |> App.Repo.preload(:countries)
Die Abfragen ausgeführt werden:
[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]
ich diesen Teil verstehen wollen, weil soweit ich auf die Ausführung der Abfrage die order by
Klausel hinzuzufügen Verarbeitungszeit zu verstehen. Ich würde es vorziehen, die order by
zu vermeiden.
Hat die Ausführungszeit es wirklich helfen? Vielleicht ist es für die DB-Engine besser, wenn Sie viele Zeilen haben, stimmt das? Ich kenne diesen Teil des Prozesses nicht sehr gut, wenn Sie Zeilen mit einer Bedingung abrufen. Also, wenn ich richtig verstanden habe, ist es besser, wenn Sie die Zeilen zuerst nach dem Feld filtern, das Sie filtern, und dann die Zeilen abrufen. –
Es hängt stark von der zugrunde liegenden DB-Engine, aber es bringt definitiv keinen Schaden. Wahrscheinlich deshalb haben Ecto-Autoren beschlossen, diesen 'ORDER BY' für alles zu programmieren. – mudasobwa