SlideShare ist ein Scribd-Unternehmen logo

Volkskrankheit "Stiefmuetterliche Indizierung"

1 von 62
Downloaden Sie, um offline zu lesen
Markus Winand 
Skalierung 
VOLKSKRANKHEIT 
“STIEFMÜTTERLICHE 
DATENBANK-INDIZIERUNG” 
10/09/14 Markus Winand
http://www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself/
http://www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself/
http://www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself/
http://www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself/
http://www.commitstrip.com/en/2014/06/03/the-problem-is-not-the-tool-itself/

Recomendados

Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungDigicomp Academy AG
 
Neues von XSLT 2.0 und XPath 2.0
Neues von XSLT 2.0 und XPath 2.0Neues von XSLT 2.0 und XPath 2.0
Neues von XSLT 2.0 und XPath 2.0Oliver Belikan
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTddjlink
 
JdbcTemplate aus Spring
JdbcTemplate aus SpringJdbcTemplate aus Spring
JdbcTemplate aus Springtutego
 
SQL Performance - Vienna System Architects Meetup 20131202
SQL Performance - Vienna System Architects Meetup 20131202SQL Performance - Vienna System Architects Meetup 20131202
SQL Performance - Vienna System Architects Meetup 20131202Markus Winand
 
Backend to Frontend: When database optimization affects the full stack
Backend to Frontend: When database optimization affects the full stackBackend to Frontend: When database optimization affects the full stack
Backend to Frontend: When database optimization affects the full stackMarkus Winand
 
Pagination Done the Right Way
Pagination Done the Right WayPagination Done the Right Way
Pagination Done the Right WayMarkus Winand
 
Modern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesModern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesMarkus Winand
 

Más contenido relacionado

Destacado

Indexes: The neglected performance all rounder
Indexes: The neglected performance all rounderIndexes: The neglected performance all rounder
Indexes: The neglected performance all rounderMarkus Winand
 
SQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they workSQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they workMarkus Winand
 
Row Pattern Matching in SQL:2016
Row Pattern Matching in SQL:2016Row Pattern Matching in SQL:2016
Row Pattern Matching in SQL:2016Markus Winand
 
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZ
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZPERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZ
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZFadel Galeb
 
Lg stuttgart varta_delisting
Lg stuttgart varta_delistingLg stuttgart varta_delisting
Lg stuttgart varta_delistingSpruchZ
 
Desarrollo organizacional0
Desarrollo organizacional0Desarrollo organizacional0
Desarrollo organizacional0Andrea Osorno
 
Cambio de actitud
Cambio de actitudCambio de actitud
Cambio de actitudtonymachaca
 
Historia de la Comunidad La Florida
Historia de la Comunidad La FloridaHistoria de la Comunidad La Florida
Historia de la Comunidad La FloridaDiego Mejía
 
Evaluacion final uml_grupo_200609_5
Evaluacion final uml_grupo_200609_5Evaluacion final uml_grupo_200609_5
Evaluacion final uml_grupo_200609_5Leidibrand
 
La enseñanza media ¿prepara para el trabajo
La enseñanza media ¿prepara para el trabajoLa enseñanza media ¿prepara para el trabajo
La enseñanza media ¿prepara para el trabajofelipeburrows
 
Stellungnahme des DAV zum Delisting
Stellungnahme des DAV zum Delisting Stellungnahme des DAV zum Delisting
Stellungnahme des DAV zum Delisting SpruchZ
 

Destacado (20)

Indexes: The neglected performance all rounder
Indexes: The neglected performance all rounderIndexes: The neglected performance all rounder
Indexes: The neglected performance all rounder
 
SQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they workSQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they work
 
Row Pattern Matching in SQL:2016
Row Pattern Matching in SQL:2016Row Pattern Matching in SQL:2016
Row Pattern Matching in SQL:2016
 
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZ
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZPERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZ
PERFIL PROFESIONAL SEGÚN EL MERCADO DEMANDANTE EN LA CIUDAD DE SANTA CRUZ
 
Instr73
Instr73Instr73
Instr73
 
Lg stuttgart varta_delisting
Lg stuttgart varta_delistingLg stuttgart varta_delisting
Lg stuttgart varta_delisting
 
DSS. Nov 21 2013. Jorge Rachid
DSS. Nov 21 2013. Jorge RachidDSS. Nov 21 2013. Jorge Rachid
DSS. Nov 21 2013. Jorge Rachid
 
Desarrollo organizacional0
Desarrollo organizacional0Desarrollo organizacional0
Desarrollo organizacional0
 
Story board
Story boardStory board
Story board
 
DSS. Nov 22 2013. Raúl Mideros
DSS. Nov 22 2013. Raúl MiderosDSS. Nov 22 2013. Raúl Mideros
DSS. Nov 22 2013. Raúl Mideros
 
Cambio de actitud
Cambio de actitudCambio de actitud
Cambio de actitud
 
DSS. Nov 20 2013. Jerry Spiegel
DSS. Nov 20 2013. Jerry SpiegelDSS. Nov 20 2013. Jerry Spiegel
DSS. Nov 20 2013. Jerry Spiegel
 
Historia de la Comunidad La Florida
Historia de la Comunidad La FloridaHistoria de la Comunidad La Florida
Historia de la Comunidad La Florida
 
Evaluacion final uml_grupo_200609_5
Evaluacion final uml_grupo_200609_5Evaluacion final uml_grupo_200609_5
Evaluacion final uml_grupo_200609_5
 
Curtain-Wall Staubschutz Brochure 2012
Curtain-Wall Staubschutz Brochure 2012Curtain-Wall Staubschutz Brochure 2012
Curtain-Wall Staubschutz Brochure 2012
 
La enseñanza media ¿prepara para el trabajo
La enseñanza media ¿prepara para el trabajoLa enseñanza media ¿prepara para el trabajo
La enseñanza media ¿prepara para el trabajo
 
El medio y medio
El medio y medioEl medio y medio
El medio y medio
 
Stellungnahme des DAV zum Delisting
Stellungnahme des DAV zum Delisting Stellungnahme des DAV zum Delisting
Stellungnahme des DAV zum Delisting
 
23 kubicek wien_dachli
23 kubicek wien_dachli23 kubicek wien_dachli
23 kubicek wien_dachli
 
El nebulizador
El nebulizadorEl nebulizador
El nebulizador
 

Ähnlich wie Volkskrankheit "Stiefmuetterliche Indizierung"

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAPCadaxo GmbH
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Markus Flechtner
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerMarkus Flechtner
 
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...OPITZ CONSULTING Deutschland
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickGFU Cyrus AG
 
SQL Server Monitoring - Piloten fliegen auch nicht blind
SQL Server Monitoring - Piloten fliegen auch nicht blindSQL Server Monitoring - Piloten fliegen auch nicht blind
SQL Server Monitoring - Piloten fliegen auch nicht blindAndre Essing
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenTorsten Fink
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunk
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaGeorg Knon
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunk
 
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!Peter Kirchner
 
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server OptimierungUwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server OptimierungInformatik Aktuell
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 

Ähnlich wie Volkskrankheit "Stiefmuetterliche Indizierung" (20)

Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAP
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
ADR Best Practices - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - Christian B...
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im Überblick
 
SQL Server Monitoring - Piloten fliegen auch nicht blind
SQL Server Monitoring - Piloten fliegen auch nicht blindSQL Server Monitoring - Piloten fliegen auch nicht blind
SQL Server Monitoring - Piloten fliegen auch nicht blind
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten Schulstandorten
 
Top 10 Internet-Trends
Top 10 Internet-TrendsTop 10 Internet-Trends
Top 10 Internet-Trends
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
Spontan testen! Das eigene Test Lab, für jeden in der Cloud!
 
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server OptimierungUwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
Aug Karlsruhe
Aug Karlsruhe Aug Karlsruhe
Aug Karlsruhe
 

Volkskrankheit "Stiefmuetterliche Indizierung"

  • 1. Markus Winand Skalierung VOLKSKRANKHEIT “STIEFMÜTTERLICHE DATENBANK-INDIZIERUNG” 10/09/14 Markus Winand
  • 8. 1 - Pandemisches Ausmaß Es betrifft Dich! (Symbol-Bild; keine echten Daten) http://upload.wikimedia.org/wikipedia/commons/c/c7/2009_world_subdivisions_flu_pandemic.png
  • 9. 2 - Durch Erfolg verursacht Copyright © 2013 Telerik, Inc. All rights reserved
  • 10. 3 - Nicht Dein Fehler http://simpsonswiki.com/wiki/File:I_Didn%27t_Do_It!_Volume_III.png
  • 11. Das Problem Query/Index Diskrepanz © 2014 by Markus Winand
  • 12. Quantifizierung des Problems Meine Beobachtung: ~50% der SQL-Performance-Probleme werden durch die Query/Index- Diskrepanz verursacht
  • 13. Problem: Index/Query Diskrepanz “A very common cause of performance problems is lack of proper indexes or the use of queries that are not using existing indexes.” —Buda Consulting http://www.budaconsulting.com/Portals/52677/docs/top_5_tech_brief.pdf
  • 14. Quantifizierung des Problems Percona White Paper: Gründe für Performance-Probleme, die einen Produktionsausfall verursachten: 38% bad SQL 15% schema and indexing http://www.percona.com/files/white-papers/causes-of-downtime-in-mysql.pdf
  • 15. Quantifizierung des Problems Umfrage auf sqlskills.com: Ursachen der letzten SQL Server Performance-Probleme: 27% T-SQL 19% Poor indexing http://www.sqlskills.com/blogs/paul/survey-what-are-the-most-common-causes-of-performance-problems/
  • 16. Quantifizierung des Problems Craig S. Mullins (DB Stratege und Forscher): „As much as 75% of poor relational performance is caused by "bad" SQL and application code.” Noel Yuhanna (Forrester Research): „The key difficulties surrounding performance continue to be poorly written SQL statements, improper DBMS configuration and a lack of clear understanding of how to tune databases to solve performance issues.”
  • 17. Die Wurzel des Problems Indizierung findet zu spät statt Meist durch die falschen Personen © 2014 by Markus Winand
  • 18. Wurzel des Problems: Admins indizieren Wie haben Datenbanken vor SQL funktioniert?
  • 19. Wurzel des Problems: Admins indizieren Die Index-Nutzung war untrennbar mit den Abfragen verbunden.
  • 20. Wurzel des Problems: Admins indizieren Beispiel: dBase Entwickler mussten... ...Indizes bei Suchen explizit nutzen: !"#$%&'"($#)$*+!#,&+-" !!! $$$.%&'$/%&+&' Zwei Anweisungen ...Index-Wartung berücksichtigen: !"#$%&'"($#)$*+!#,&+-"0$%'(1
  • 21. Wurzel des Problems: Admins indizieren SQL ist eine Abstraktion: Es definiert nur die logische Sicht Die Implementierung muss sich um alles andere Kümmern.
  • 22. Wurzel des Problems: Admins indizieren Indizes Backup & Recovery Speicher- Management Tuning- Parameter SQL (Sprache) bietet: Constraints Tabellen Views Transaktionen Abfragen Daten- Manipulation SQL Datenbanken (Software) bieten: Hoch-verfügbarkeit
  • 23. Wurzel des Problems: Admins indizieren Indizes Backup & Recovery Speicher- Management Tuning- Parameter Constraints Tabellen Views Transaktionen Abfragen Daten- Manipulation SQL Datenbanken (Software) bieten: Entwickler Hoch-verfügbarkeit
  • 24. Wurzel des Problems: Admins indizieren Entwickler Administratoren Indizes Backup & Recovery Speicher- Management Tuning- Parameter Constraints Tabellen Views Transaktionen Abfragen Daten- Manipulation Hoch-verfügbarkeit
  • 25. Wurzel des Problems: Admins indizieren Heute wird Indizierung oft als Tuning-Aufgabe betrachtet, die in die Verantwortung der Admins fällt.
  • 26. Wurzel des Problems: Admins indizieren Ein Missverständnis, das neue Probleme bringt: Admins kennen die Abfragen nicht Müssen die Abfragen erst eruieren. Sehr zeitaufwendig und meistens unvollständig. by G-10gian82 deviantart.com
  • 27. Wurzel des Problems: Admins indizieren Ein Missverständnis, das neue Probleme bringt: Admins kennen die Abfragen nicht Müssen die Abfragen erst eruieren. Sehr zeitaufwendig und meistens unvollständig. Admins können die Abfragen nicht ändern Sie können den Index an die Abfrage anpassen. Aber nicht die Abfrage an den Index.
  • 28. Die Lösung Indizierung ist eine Entwicklungsaufgabe © 2014 by Markus Winand
  • 29. Wurzel des Problems: Admins indizieren Entwickler Administratoren Indizes Backup & Recovery Speicher- Management Tuning- Parameter Constraints Tabellen Views Transaktionen Abfragen Daten- Manipulation Hoch-verfügbarkeit
  • 30. Wurzel des Problems: Admins indizieren Entwickler Administratoren Constraints Indizes Backup & Recovery Speicher- Management Tuning- Parameter Tabellen Views Transaktionen Abfragen Daten- Manipulation Hoch-verfügbarkeit Muss passen!
  • 31. Neues Problem: es wird nicht gelehrt Indizierung ist nicht Teil des SQL-Standards und wird in Büchern über die Sprache SQL daher nicht abgedeckt. 11 SQL-Bücher analysiert: nur 1.0% der Seiten sind über Indizierung (70 von 7330 Seiten). Beispiele: Oracle SQL by Example: 2.0% (19/960) Beginning DBs with PostgreSQL: 0.8% (5/664) Learning SQL: 3.3% (11/336—höchste Rate dieser Kategorie)
  • 32. Neues Problem: es wird nicht gelehrt Manche Tuning-Bücher vertiefen Indizierung, verstecken es aber immer zwischen hunderten Seiten über HW, OS and DB-Parametriesierung. 15 Datenbank-Admin-Bücher analysiert: 6% der Seiten sind über Indizierung (395 von 6568 Seiten). Beispiele: Oracle Performance Survival Guide: 5.2% (38/730) High Performance MySQL: 8% (55/684) PostgreSQL 9 High Performance: 5.8% (27/468)
  • 33. Neues Problem: es wird nicht gelehrt Konsequenz: Entwickler wissen nicht, wie man Indizes richtig einsetzt. Ergebnisse unsers 3-Minuten online Tests: http://use-the-index-luke.com/de/3-minuten-test 5 Fragen: jede über einen bestimmten Anwendungsfall von Indizes. Nicht repräsentativ!
  • 34. 3-Minuten Quiz: SQL-Indizierung Q1: Gut oder schlecht? (Funktionen) 234564$7894:$#;*,%'($<8$#;*$=!"#$%&'(>? @4A426$#"(#0$'+#",B)* $$C3<D$#;* $/E434$)*+,-!"#$%&'(.$F$1GHI?
  • 35. 3-Minuten Quiz: SQL-Indizierung Q1: Gut oder schlecht? (Funktionen) 234564$7894:$#;*,%'($<8$#;*$=!"#$%&'(>? @4A426$#"(#0$'+#",B)* $$C3<D$#;* $/E434$)*+,-!"#$%&'(.$F$1GHI? http://use-the-index-luke.com/de/sql/where/verstuemmelung/datumsfelder
  • 36. 3-Minuten Quiz: SQL-Indizierung J$K453='+#",B)*>$F$1GHI? LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMLMMMMMMMLMMMMMMMMMMMMML Komplette N$#/0$$N$O)!!%;*",Tabelle P"wird Q!$N$P"Q$$N$1'23$$N$4(#R+$$$$$$$N LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMLMMMMMMMLMMMMMMMMMMMMML gelesen N$+445$N$8SAA$$$$$$$$$$N$6744$N$89:;:$N$S!%&T$UV"R"$N$ LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMLMMMMMMMLMMMMMMMMMMMMML J$$$'+#",B)*$WF$@63,6<,9564=X1GHIMGHMGHX0$XYKMY-MY'> 589$'+#",B)*$Z$$@63,6<,9564=X1GH[MGHMGHX0$XYKMY-MY'> LMMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMLMMMMMMMMMMMMMMMMMML Index N$#/0$$$N$wird O)!!%;*",genutzt P"Q!$N$P"Q$$$$$N$1'23$$N$4(#R+$$$$$$$$$$$$N LMMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMLMMMMMMMMMMMMMMMMMML N$1"<=$$N$#;*,%'($$$$$$$N$#>(%?!@$N$55:9A$N$$$$$$$$$$$$$$$$$$N$ LMMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMLMMMMMMMMMMMMMMMMMML
  • 38. 3-Minuten Quiz: SQL-Indizierung Q2: Gut oder schlecht? (Indiziertes Top-N) 234564$7894:$#;*,%'($8$#;*$=+0$'+#,B)*? @4A426$%'0$'+#,B)* $$C3D$#;* Syntax-Varianten: Std: $/E434$+$F$ C462E$C73@6$H$3/$8AK $3943$]K$'+#,B)*$94@2 Oracle: /E434$3/8SD$ZFH $A7D76$H SQL Server: @4A426$6^$H
  • 39. 3-Minuten Quiz: SQL-Indizierung Q2: Gut oder schlecht? (Indiziertes Top-N) 234564$7894:$#;*,%'($8$#;*$=+0$'+#,B)*? @4A426$%'0$'+#,B)* $$C3D$#;* Syntax-Varianten: Std: $/E434$+$F$ C462E$C73@6$H$3/$8AK $3943$]K$'+#,B)*$94@2 Oracle: /E434$3/8SD$ZFH $A7D76$H SQL Server: @4A426$6^$H http://use-the-index-luke.com/de/sql/partielle-ergebnisse/top-n-abfragen
  • 40. 3-Minuten Quiz: SQL-Indizierung Das ist bereits die optimale Lösung. LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMMMMMMMMMMMMMMMMMMMML N$#QO$N$O)!!%;*,PQ!$N$PQ$$$$$N$4(#R+$$$$$$$$$$$$$$$$$$$$N LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMMMMMMMMMMMMMMMMMMMML N$R.$$N$#;*,%'($$$$$$$N$#;*,%'($N$S!%T$UVR?$S!%T$%'($N$ LMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMLMMMMMMMMMMMMMMMMMMMMMMMMMML So schnell wie ein Primärschlüssel-Zugriff. (Im Falle von MySQL und SQL Server wegen des Clustered-Indexes ein Index-Only Scan)
  • 42. Nebenbei: Finger weg von OFFSET @4A426$%'0$'+#,B)* $$C3D$#;* $/E434$+$F$ $3943$]K$'+#,B)*$94@2 $A7D76$H !#$%'
  • 43. Nebenbei: Finger weg von OFFSET !#$% ist verlockend, aber böse. Sticker und Bierdeckel holen! http://use-the-index-luke.com/no-offset
  • 44. 3-Minuten Quiz: SQL-Indizierung Q3: Gut oder schlecht? (Reihenfolge) CREATE INDEX tbl_idx ON tbl (a, b); SELECT id, a, b FROM tbl WHERE a = ? AND b = ?; SELECT id, a, b FROM tbl WHERE b = ?;
  • 45. 3-Minuten Quiz: SQL-Indizierung Q3: Gut oder schlecht? (Reihenfolge) CREATE INDEX tbl_idx ON tbl (a, b); SELECT id, a, b FROM tbl WHERE a = ? AND b = ?; SELECT id, a, b FROM tbl WHERE b = ?; http://use-the-index-luke.com/de/sql/where/gleichheit/zusammengesetzte-schluessel
  • 46. 3-Minuten Quiz: SQL-Indizierung Nur eine Abfrage kann den Index (a, b) gut nutzen: ...WHERE a = ? AND b = ?; '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-)(),.//012-34-+/)()4-+)))))()5.6/)()$7*58))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()()*))()+,-./01)))))))()*123097)())))2)():;;)=/0?)09-7)( '''''''''''''''''''''''''''''''''''''''''''''''''''''' ...WHERE b = ?; '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-))(),.//012-34-+/)()4-+)))))())5.6/)()$7*58))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()/30)1)()4566))))))))))()*123097)()27879)():;;)=/0?)09-7)( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Ganzer Index wird gelesen!
  • 47. 3-Minuten Quiz: SQL-Indizierung Spalten umdrehen (b, a): beide nutzen Index gut ...WHERE a = ? AND b = ?; '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-)(),.//012-34-+/)()4-+)))))()5.6/)()$7*58))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()()*))()+,-./01)))))))()*123097)())))2)():;;)=/0?)09-7)( '''''''''''''''''''''''''''''''''''''''''''''''''''''' ...WHERE b = ?; '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-)(),.//012-34-+/)()4-+)))))()5.6/)()$7*58))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''' ()5-@))()*123097)))))))()*123097)())))A)():;;)=/0?)09-7)( ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  • 49. 3-Minuten Quiz: SQL-Indizierung Q4: Gut oder schlecht? (LIKE indizieren) CREATE INDEX tbl_idx ON tbl (text); SELECT id, text FROM tbl WHERE text LIKE '%BEGRIFF%';
  • 50. 3-Minuten Quiz: SQL-Indizierung Q4: Gut oder schlecht? (LIKE indizieren) CREATE INDEX tbl_idx ON tbl (text); SELECT id, text FROM tbl WHERE text LIKE '%BEGRIFF%'; http://use-the-index-luke.com/de/sql/where/bereiche/like-filter
  • 51. 3-Minuten Quiz: SQL-Indizierung B-Tree-Indizes unterstützen keine führenden Wildcard-Zeichen. '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-))(),.//012-34-+/)()4-+)))))())5.6/)()$7*58))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()/30)1)()4566))))))))))()*123097)()27:8;)():;;)=/0?)09-7)( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Brauchst du wirklich lexikalische Suche? Ist Volltext-Suche eine Option? Externe Such-Lösung?
  • 53. 3-Minuten Quiz: SQL-Indizierung Q5: Wie ändert sich die Performance? (IOS) 234564$7894:$#;*,%'($ $$$$$$$$$$8$#;*$=+0$'+#,B)*_-? @4A426$'+#,B)*_- $$$$$0$B)_#=` $$C3D$#;* $/E434$+$F$ $a3S^$]K$'+#,B)*_-? =bHGG$c%* @4A426$'+#,B)*_- $$$$$0$B)_#=` $$C3D$#;* $/E434$+$F$ $$$+6B55C5D $a3S^$]K$'+#,B)*_-? =bHG$c%*
  • 61. 3-Minuten Quiz: SQL-Indizierung Vorher war ein Index-Only-Scan möglich (“covering Index”), nachher nicht mehr. '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()*+,-)(),.//012-34-+/)()4-+)))))()$7*58))))))))))))))))))))( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ()5-@))()*123097)))))))()*123097)()=/0?)6B-5-C)5/3=/30)1)( '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''' ()*+,-)(),.//012-34-+/)()4-+)))))()$7*58)))))))( ''''''''''''''''''''''''''''''''''''''''''' ()5-@))()*123097)))))))()*123097)()=/0?)6B-5-)( ''''''''''''''''''''''''''''''''''''''''''' Kleiner Unterschied, große Wirkung. http://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key
  • 62. 3-Minuten Quiz: 60% fallen durch! Nur knapp 40% beantworten vier oder mehr Fragen richtig.
  • 63. (Mit Raten alleine würden 12.5% bestehen)
  • 64. Volkskrankheit: stiefmütterliche Indizierung Jeder weiss, dass Indizierung wichtig für Performance ist, aber niemand nimmt sich Zeit es ordentlich zu lernen und durchzuführen.
  • 65. Volkskrankheit: stiefmütterliche Indizierung Index-Details sind kaum bekannt !„Details“ wie die Spaltenreihenfolge oder Bereichs-suchen müssen gelernt und verstanden werden. Nur eine Funktion wird verwendet: schnell suchen. !Indizes haben drei Funktionen (Mächte/Powers): Daten finden, Daten gruppieren, Daten sortieren. Abfragen werden einzeln Indiziert !Man muss aus Applikationssicht indizieren (alle Abfragen beachten). Das ist eine Design-Aufgabe!
  • 66. Volkskrankheit: Stiefmütterliche Indizierung Legst Du Indizes einfach an oder designst du Indizes?
  • 67. Über Markus Winand Ich tune Entwickler auf SQL-Performance. Training Tuning: winand.at Autor von: SQL Performance Explained Geeky blog: use-the-index-luke.com
  • 68. Über Markus Winand use-the-index-luke.com