Query herschrijven - Query rewriting

Het herschrijven van query's is een typisch automatische transformatie die een reeks databasetabellen , views en/of query's , meestal indices , vaak verzamelde gegevens en querystatistieken en andere metagegevens vereist , en een reeks verschillende query's oplevert, die dezelfde resultaten opleveren, maar uitvoeren met betere prestaties (bijvoorbeeld sneller of met minder geheugengebruik). Het herschrijven van query's kan gebaseerd zijn op relationele algebra of een uitbreiding daarvan (bijv. relationele algebra met meerdere sets met sortering, aggregatie en predikaten met drie waarden, dwz NULL's zoals in het geval van SQL ). De equivalentieregels van relationele algebra worden uitgebuit, met andere woorden, van verschillende zoekstructuren en -ordeningen kan wiskundig worden aangetoond dat ze hetzelfde resultaat opleveren. Filteren op velden A en B, of kruislings samenvoegen van R en S kan bijvoorbeeld in elke volgorde worden gedaan, maar er kan een prestatieverschil zijn. Meerdere bewerkingen kunnen worden gecombineerd en bewerkingsopdrachten kunnen worden gewijzigd.

Het resultaat van het herschrijven van query's is mogelijk niet op hetzelfde abstractieniveau of applicatieprogrammeerinterface (API) als de oorspronkelijke set query's (hoewel dit vaak wel het geval is). De invoerquery's kunnen bijvoorbeeld in relationele algebra of SQL zijn, en de herschreven query's kunnen dichter bij de fysieke representatie van de gegevens staan, bijvoorbeeld arraybewerkingen. Het herschrijven van query's kan ook de materialisatie van views en andere subquery's inhouden ; bewerkingen die al dan niet beschikbaar zijn voor de API-gebruiker. De transformatie van het herschrijven van query's kan worden ondersteund door indices te creëren waaruit de optimizer kan kiezen (sommige databasesystemen creëren hun eigen indexen indien dit nuttig wordt geacht), het gebruik van specifieke indices verplicht te stellen, gematerialiseerde en/of gedenormaliseerde views te creëren, of een databasesysteem te helpen bij het verzamelen van statistieken over de gegevens en het gebruik van query's, aangezien de optimaliteit afhangt van patronen in gegevens en typisch querygebruik.

Het herschrijven van query's kan gebaseerd zijn op regels of op optimalisatie. Sommige bronnen bespreken het herschrijven van query's als een afzonderlijke stap voorafgaand aan optimalisatie, werkend op het niveau van de voor de gebruiker toegankelijke algebra-API (bijv. SQL).

Er zijn andere, grotendeels ongerelateerde concepten die ook zo worden genoemd, bijvoorbeeld het herschrijven van zoekopdrachten door zoekmachines .

Zie ook

Referenties

  1. ^ Vassilakopoulos, Michael; Tzouramanis, Theodoros; Terenziani, Paolo; Patel, Chintan; Weng, Chunhua; Romero, Rafael; Mazon, Jose-Norberto; Trujillo, Juan; Serrano, Manuel; Piattini, Mario; Buragohain, Chiranjeeb; Suri, Subhash; Zhu, Xingquan; Risch, Tore; Bu, Yingyi; Chi Wing Wong, Raymond; Fu, Ada Wai Chee; Chirkova, Rada; Gupta, Amarnath; Vechtomova, Olga; Hij, Ben; Risch, Tore; Tata, Sandeep; Patel, Jignesh M.; Lacroix, Zoé; Bouganim, Luc; Pitoura, Evaggelia; Neumann, Thomas; Tan, Kian Lee; et al. (2009). "Query herschrijven". Encyclopedie van databasesystemen . blz. 2308-2309. doi : 10.1007/978-0-387-39940-9_863 . ISBN 978-0-387-35544-3.
  2. ^ Pirahesh, Hamid; Hellerstein, Joseph M. "Uitbreidbare / op regels gebaseerde query-herschrijfoptimalisatie in Starburst" . citeseerx.ist.psu.edu . Ontvangen 2020-04-06 .
  3. ^ Williams, Hugh E. (2012/03/20). "Query herschrijven in zoekmachines" . Hugh E. Williams . Ontvangen 2020-04-06 .