Een van de grotere aankondigingen die we gezien hebben op de Snowflake Summit 2022 , ging over de vernieuwingen die we gaan zien binnen de zoek optimalisatie van Snowflake.

We hebben al gezien dat Snowflake onder de motorkap een hoop moeite stopt in de automatische versnelling van de databases maar met de vernieuwde zoek optimalisatie hebben we wederom zelf een stuk gereedschap in handen gekregen om de verbeteringen zelf verder toe te spitsen.

Zoek optimalisatie is bedoelt voor een bepaald soort tabel waarvan we ondertussen al hebben geleerd hoe deze wordt gebruikt en die aan een aantal voorwaarden voldoet.

Voordat we het gaan hebben over de ‘eisen’ die aan de tabel ten grondslag liggen , moeten we het even hebben over ‘the elephant in the room’ : Zoek optimalisatie is geen gratis optie. Het bouwen en onderhouden van de optimalisatie is afhankelijk van zowel compute als storage, waarvoor dan ook credits moeten worden betaald. Het idee hiervan is echter wel, dat deze betaalde optie de verdere queries dusdanig versneld dat de eerdere investering hierbij ruimschoots wordt goed gemaakt.

Wanneer zou je moeten gaan denken aan zoek optimalisatie ? 

Zoek optimalisatie komt om de hoek kijken bij tabellen die kolommen bevatten met tussen de 200.000 en 300.000 unieke waardes.

Waar moet ik rekening mee houden bij zoek optimalisatie ? 

Zoek optimalisatie wordt altijd per kolom geactiveerd binnen een tabel waarbij er tevens kan worden aangegeven wat voor optimalisatie moet worden toegepast.

De opties hierin zijn onder andere: 

  • Geo
  • Substring

Het is tevens mogelijk om simpelweg alle opties toe te passen maar wees je bewust dat dit meer kosten met zich mee brengt. Snowflake heeft juist extra moeite gestopt in de mogelijkheid om een specifieke optimalisatie in te zetten om zo de kosten te drukken.

Hoe activeer ik zoek optimalisatie?

Het activeren van de zoek optimalisatie is ontzettend eenvoudig. 

  1. Zorg ervoor de je huidige rol binnen snowflake de juiste rechten bevat (<correcte rechten>)
  2. Laat Snowflake zelf eerst een berekening maken om na te gaan of de verwachting van besparing in ieder geval bestaat. Deze berekening is onlangs aangepast en een stuk accurater dan dat deze in het verleden was!
  3. Activeer de zoek optimalisatie met
ALTER TABLE [IF EXISTS] <table_name> ADD SEARCH OPTIMIZATION;
  1. Ga na of de zoek optimalisatie op z’n plaats staat
  2. Test het verschil
  3. Hoe de kosten en baten van de optimalisatie in de gaten om te zien wat hierbij het verschil is met
select system$estimate_search_optimization_costs('TABLE_WITH_SEARCH_OPT');