{"id":1018,"date":"2025-08-18T22:28:26","date_gmt":"2025-08-18T20:28:26","guid":{"rendered":"https:\/\/modedcon.com\/?page_id=1018"},"modified":"2025-10-20T15:31:05","modified_gmt":"2025-10-20T13:31:05","slug":"sql-performance-analyse-und-optimierung-auf-db2-for-i","status":"publish","type":"page","link":"https:\/\/modedcon.com\/en\/projekte\/sql-performance-analyse-und-optimierung-auf-db2-for-i\/","title":{"rendered":"SQL Performance Analyse und Optimierung auf Db2 for i"},"content":{"rendered":"<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:60%\">\n<p>Daten sind unser wichtigstes Gut. Daten wachsen exponentiell. Die Beziehungen zwischen Daten werden immer komplexer und die Zugriffe auf die Daten immer vielschichtiger.<\/p>\n\n\n\n<p>Je schneller die Zugriffe auf die Daten erfolgen k\u00f6nnen, desto schneller erh\u00e4lt man das Ergebnis, desto besser kann man die Daten auswerten, desto besser sind die Entscheidungen des Managements und desto besser kann man sich Wettbewerbsvorteile sichern. <\/p>\n\n\n\n<p>Die Zugriffe erfolgen heute fast ausschlie\u00dflich mit SQL!<\/p>\n\n\n\n<p>Das Sch\u00f6ne wiederum an SQL ist, dass die gew\u00fcnschten Daten gefunden werden! Allerdings macht es einen riesigen Unterschied, ob auf einen Datensatz direkt zugegriffen werden kann, oder ob die ganze Tabelle durchgelesen werden muss, um eben diesen Satz zu finden. <\/p>\n\n\n\n<p>Deshalb wird die SQL-Performance Analyse und Optimierung immer wichtiger!<\/p>\n\n\n\n<p>Zwei Hauptfaktoren beeinflussen die Performance ihrer SQL-Abfragen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>SQL-Syntax &#8211; Der Schl\u00fcssel zur Effizienz<\/em><\/strong>                                                                                      Bereits kleine Unterschiede in der SQL-Syntax k\u00f6nnen gro\u00dfe Auswirkungen haben:\n<ul class=\"wp-block-list\">\n<li>Zwei Abfragen liefern das gleiche Ergebnis, nur in einem Fall kann ein Index verwendet werden, w\u00e4hrend im anderen Fall die komplette Tabelle durchgelesen werden muss.<\/li>\n\n\n\n<li>Oder in einem anderen Fall mussten in ein und derselben Abfrage mehrere Tabellen verkn\u00fcpft werden und einzelne Daten, sowie aggregierte Daten (Summen, Durchschnitt) ermittelt werden. Anstatt jede Tabelle nur einmal zu verarbeiten, wurde auf die gleiche Tabelle mehrfach zugegriffen. Nach der \u00dcberarbeitung wurde auf die Tabelle nur noch einmal zugegriffen, wodurch die Abfrage nur noch 1\/3 der Laufzeit ben\u00f6tigt hat. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><em>Zugriffswege (Indices) &#8211; Der Weg zur optimalen Abfrage<\/em><\/strong>                                                          Bei der Optimierung werden die vorhandenen Zugriffswege (Indices, logische Dateien, Key Constraints) bewertet. Sofern keine Zugriffswege vorhanden sind wird die komplette Tabelle gelesen. Das Gleiche gilt, wenn keine geeigneten Zugriffswege vorhanden sind.                                                            Tempor\u00e4re Indices (MTI = Maintained Temporary Index) werden nur in Ausnahmef\u00e4llen, wenn die Abfrage ansonsten nicht ausf\u00fchrbar w\u00e4re, erstellt.                                                                          Die (optimalen) Zugriffswege werden nach bestimmten Algorithmen ermittelt. Sofern die &#8222;besten&#8220; Indices nicht vorhanden sind, wird eine Index-Empfehlung (Index-Advice) erstellt. Diese Empfehlungen k\u00f6nnen ausgewertet und daraufhin Indices gezielt erstellt werden.                   Einfach alle vorgeschlagenen Indices zu erstellen ist keine gute Idee, da jeder (zus\u00e4tzliche) Index beim Hinzuf\u00fcgen, \u00c4ndern und L\u00f6schen von Datens\u00e4tzen n der zugrunde liegenden Tabelle Performance kostet. Je gr\u00f6\u00dfer die Tabellen und je mehr Zugriffswege auf der Tabelle liegen, desto langsamer wird das Hinzuf\u00fcgen, \u00c4ndern und L\u00f6schen von Datens\u00e4tzen.                                   Index-Empfehlungen werden nur f\u00fcr &#8222;regul\u00e4re&#8220; Indices erstellt. Indices, die von den erweiterten Index-Technologien (Derived- and Sparse-Indexe) profitieren k\u00f6nnen, werden nicht vorgeschlagen.  Hier hilft nur die Erfahrung.                                                                                                           Ohne passende Indices muss eine Tabelle vollst\u00e4ndig gelesen werden &#8211; was massiv Zeit kostet.   Die Optimierung basiert auf: \n<ul class=\"wp-block-list\">\n<li>Analyse der vorhandenen Zugriffswege (Indices, logische Dateien, Key Constraints)<\/li>\n\n\n\n<li>Bewertung der vorgeschlagenen Indices (Index Advice) auch in Verbindung mit den Statements durch die die Advices generiert wurden<\/li>\n\n\n\n<li>Konvertierung der tempor\u00e4ren Indices (MTI = Maintained Temporary Index) in permanente Indices<\/li>\n\n\n\n<li>Gezielte Erstellung der notwendigen Indices incl. derived Indices (generierte Schl\u00fcsselfelder) und sparse Indices (WHERE-Bedingungen) sowie Encoded Vector Indices (EVI) mit und ohne Include-Anweisungen<\/li>\n\n\n\n<li>L\u00f6schung ungenutzte Indices                                                                                                  Achtung: Jeder zus\u00e4tzliche Indes kostet Performance bei INSERT-, UPDATE- und DELETE-Operationen. Eine pauschale Erstellung aller vorgeschlagenen Zugriffswege ist daher kontraproduktiv.      <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:5%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:35%\">\n<div class=\"wp-block-group has-custom-bg-background-color has-background is-vertical is-layout-flex wp-container-core-group-is-layout-079504a7 wp-block-group-is-layout-flex\" style=\"padding-top:var(--wp--preset--spacing--10);padding-right:var(--wp--preset--spacing--10);padding-bottom:var(--wp--preset--spacing--10);padding-left:var(--wp--preset--spacing--10)\">\n<p class=\"hideonmobile\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/\" data-type=\"page\" data-id=\"876\">zur\u00fcck zur \u00dcbersicht<\/a><\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading has-large-font-size\">Dieses Projekt<\/h2>\n\n\n\n<p class=\"has-custom-logo-red-color has-text-color has-link-color wp-elements-0769cf7e1cc07049e052ffe016fe898e\">Die Buchung ist nur f\u00fcr Unternehmer, Gewerbetreibende, Freiberufler und \u00f6ffentliche Institutionen m\u00f6glich; nicht f\u00fcr Verbraucher i.S.d. \u00a7 13 BGB.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-custom-logo-blue-background-color has-background wp-element-button\" href=\"https:\/\/modedcon.com\/en\/kontakt\/\">Unverbindliche Anfrage stellen<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-5f9f5280 wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading has-large-font-size\" style=\"margin-bottom:var(--wp--preset--spacing--10)\">Alle Projekte<\/h2>\n\n\n\n<ul class=\"wp-block-list is-style-default\">\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/modernisierung-ihrer-ibm-i-datenbank-von-dds-nach-ddl\/\" data-type=\"page\" data-id=\"1010\">Modernisierung Ihrer IBM i-Datenbank von DDS nach DDL<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/anwendungsmodernisierung-mit-ileintegrated-language-environment-konzepten\/\" data-type=\"page\" data-id=\"1012\">Anwendungsmodernisierung mit ILE(Integrated Language Environment)- Konzepten<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/externalisierung-von-daten-zugriffen-crud-funktionen\/\" data-type=\"page\" data-id=\"1014\">Externalisierung von Daten-Zugriffen (CRUD-Funktionen)<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/kurse\/data-centric-verlagerung-von-programmlogik-in-die-datenbank\/\" data-type=\"page\" data-id=\"540\">Data Centric Verlagerung von Programmlogik in die Datenbank<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/sql-performance-analyse-und-optimierung-auf-db2-for-i\/\" data-type=\"page\" data-id=\"1018\">SQL Performance Analyse und Optimierung auf Db2 for i<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/commitment-control-transaktions-sicherheit-und-datenkonsitenz\/\" data-type=\"page\" data-id=\"1020\">Commitment Control \u2013 Transaktions-Sicherheit und Datenkonsitenz<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/row-and-column-access-control-rcac\/\" data-type=\"page\" data-id=\"1022\">Row and Column Access Control (RCAC)<\/a><\/li>\n\n\n\n<li style=\"margin-top:6px;margin-bottom:6px\"><a href=\"https:\/\/modedcon.com\/en\/projekte\/individual-programmierung\/\" data-type=\"page\" data-id=\"1023\">Individual Programmierung<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Daten sind unser wichtigstes Gut. Daten wachsen exponentiell. Die Beziehungen zwischen Daten werden immer komplexer und die Zugriffe auf die Daten immer vielschichtiger. Je schneller die Zugriffe auf die Daten erfolgen k\u00f6nnen, desto schneller erh\u00e4lt man das Ergebnis, desto besser kann man die Daten auswerten, desto besser sind die Entscheidungen des Managements und desto besser [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":876,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1018","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/pages\/1018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/comments?post=1018"}],"version-history":[{"count":4,"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/pages\/1018\/revisions"}],"predecessor-version":[{"id":1094,"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/pages\/1018\/revisions\/1094"}],"up":[{"embeddable":true,"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/pages\/876"}],"wp:attachment":[{"href":"https:\/\/modedcon.com\/en\/wp-json\/wp\/v2\/media?parent=1018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}