MS-SQL Server Abfrage - Qualität
Markus**
- datenbank
Ich wüsste gerne wie ihr folgende Abfrage in Hinsicht auf die Qualität bewerten würdet. Letzten Endes geht es einfach nur darum zu ermitteln welche Naturparke in einer bestimmten Ergebnismenge auftauchen.
SELECT DISTINCT
naturparks.id AS id,
naturparke_name AS [Display Name],
(SELECT DISTINCT sublistBnd.name_name + '|'
FROM jh AS innerJh INNER JOIN
sublist_base_naturparke_naturparke AS sublistNat ON sublistNat.reftable_id = innerJh.id_ INNER JOIN
sublist_base_naturparke_naturparke_base_naturparke_map AS map ON map.leftid = sublistNat.id_ AND map.rightid = naturparks.id_ INNER JOIN
base_bundesländer AS base ON base.id = innerJh.id_bundesland INNER JOIN
base_bundesländer_sublist_name AS sublistBnd ON sublistBnd.reftable_id = base.id_
WHERE innerJh.id_lvb = 8 FOR XML PATH('')) AS [Bundeslaender]
FROM jh AS Jh INNER JOIN
sublist_base_naturparke_naturparke AS sublist ON sublist.reftable_id = Jh.id_ INNER JOIN
sublist_base_naturparke_naturparke_base_naturparke_map AS map ON map.leftid = sublist.id_ INNER JOIN
base_naturparke AS naturparks ON naturparks.id_ = map.rightid
WHERE Jh.id_lvb = 8
ORDER BY naturparks.naturparke_name
Sieht mir ganz nach "mit dem Editor schnell zusammengeklickt, aber von Datenbanken keine Ahnung" aus.
Danke und Gruß Markus**
Hi,
was verstehst du unter "Qualitaet" der Abfrage?
Mit einem Editor wirst du diese Abfrage nicht zusammenklicken koennen, da hat es FOR XML PATH drin.
zu 1) scheint mir auf den ersten Blick etwas ueberkandideltfuer die banale Anforderung
Letzten Endes geht es einfach nur darum zu ermitteln welche Naturparke in einer bestimmten Ergebnismenge auftauchen.
Geht es einfacher. Mit 50%iger Sicherheit, JA. Aber nur unter Kenntnis der zugrundeliegenden Datenstrukturen und der genaueren Anforderungen, wie das Ergebnis aussehen soll. Z.b. dieses Subselect mit den Bundeslaendern scheint mir ein Versuch einer GROUP_CONCAT Sache zu sein. FOR XML ist nich unbedingt der schnellste Operator in MS SQL Server.
zu 2) das kannst du herausfinden mit dem Ausfuehrungsplan (Execution Plan).
Sind die Kosten <=0.5 und die Ausfuerhungszeit bei <=200ms wuerd ich keine weiteren Untersuchungen anstellen.
Ciao, Frank
Moin Moin!
Hi,
was verstehst du unter "Qualitaet" der Abfrage?
- effiziente Resourcennutzung und Geschwindigkeit
Mit einem Editor wirst du diese Abfrage nicht zusammenklicken koennen, da hat es FOR XML PATH drin.
Ja, hat es drin, aber völlig sinnfrei, da kommt ohnehin immer nur ein Wert zurück. ;-)
Ciao, Frank
Ciao, Markus**