sql >> Database >  >> RDS >> Oracle

Oracle-syntaxis - moeten we kiezen tussen oud en nieuw?

Hetzelfde hier, maar niet zo veel ontwikkelaars, en niet zo oud als de code. Ik gebruik de nieuwere dingen, de oudere jongens gebruiken de oudere stijl, maar we weten allebei wat de ander probeert te doen.

Persoonlijk zou ik zeggen, kies voor de stijl die voor de individuele ontwikkelaar gemakkelijker te gebruiken is. Tenzij u benchmarks uitvoert en ontdekt dat de ene sneller is dan de andere (zoals in, genoeg verschil om significant te zijn), en zowel nieuwe als oude de vragen die ze zien kunnen lezen en begrijpen, is er geen reden om ze te veranderen.

Mijn persoonlijke stem zou echter zijn om de oude dingen te laten zoals ze zijn en nieuwe zoekopdrachten te schrijven met de nieuwere syntaxis, zoals met behulp van JOIN s en USING en ON enz. zijn een stuk gemakkelijker te lezen en weten wat er aan de hand is, en hebben dan een heleboel AND x.col = y.col AND z.col = a.col in de WHERE sectie.

Dat, en de nieuwe jongens zullen waarschijnlijk langer in de buurt zijn, dus ze zullen uiteindelijk hun zin krijgen...

Een toegevoegd voorbeeld

Ik weet niet hoe de rest van jullie is, maar ik zou het vreselijk vinden om zoiets als dit uit te zoeken (of dit te schrijven) met de oude stijl van meedoen:

SELECT DISTINCT product_zone_map_id, zh.name_english, zh.name_french, zone_id, ad.attribute_value_english AS bullprep_region_type,
        product_zone_type_id, ad.attribute_value_english, language_english, product_code, office_code,
        (
            SELECT attribute_value_english
            FROM presentation p JOIN presentation_details ad USING(presentation_id)
            WHERE dimension_id = 4
              AND object_id = product_zone_map_id
              AND attribute_type = 'BULLPREP PARENT ID'
              AND p.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
              AND (p.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR p.usage_end_date IS NULL)
        ) AS bullprep_parent_id,
        (
            SELECT attribute_value_english
            FROM presentation p JOIN presentation_details ad USING(presentation_id)
            WHERE dimension_id = 4
              AND object_id = product_zone_map_id
              AND attribute_type = 'BULLPREP GROUP ID'
              AND p.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
              AND (p.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR p.usage_end_date IS NULL)
        ) AS bullprep_group_id, product_zone_seq
FROM zone z JOIN zone_history zh ON(z.zone_id = zh.zone_id)
     JOIN product_zone_map pzm ON(z.zone_id = pzm.zone_id)
     JOIN product USING(product_id)
     JOIN product_history ph USING(product_id)
     JOIN language_reference USING(language_id)
     LEFT OUTER JOIN product_zone_attribute_details pzad USING(product_zone_map_id)
     LEFT OUTER JOIN attribute_details ad USING(attribute_id)
     JOIN zone_geocode_map USING(zone_id)
     JOIN geocode USING(geocode_id)
WHERE zh.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
  AND (zh.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR zh.usage_end_date IS NULL)
  AND pzm.usage_start_date <= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss')
  AND (pzm.usage_end_date >= TO_TIMESTAMP('2010-05-12', 'yyyy-mm-dd hh24:mi:ss') OR pzm.usage_end_date IS NULL)
  AND (attribute_type = 'BULLPREP REGION TYPE' OR attribute_type IS NULL)
  AND product_id = 2075
ORDER BY product_zone_seq



  1. SQL Server :geeft NEWID() altijd een unieke ID?

  2. Maak een door de gebruiker gedefinieerde operator met links/rechts

  3. voer het *.sql-bestand uit met python MySQLdb

  4. Schrijf een Postgres Get or Create SQL Query