{"id":612,"date":"2018-08-30T15:08:24","date_gmt":"2018-08-30T13:08:24","guid":{"rendered":"http:\/\/explainit.pl\/wordpress\/?p=612"},"modified":"2018-12-30T15:14:09","modified_gmt":"2018-12-30T14:14:09","slug":"kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates","status":"publish","type":"post","link":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/","title":{"rendered":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES"},"content":{"rendered":"<p>W przypadku z\u0142o\u017conych zapyta\u0144 SQL problem wydajno\u015bciowy mo\u017ce czasami wynika\u0107 z nieoptymalnej kolejno\u015bci ewaluacji predykat\u00f3w w klauzuli WHERE. Warto w tym miejscu przypomnie\u0107 dwa wa\u017cne fakty dotycz\u0105ce optymalizacji i wykonywania zapyta\u0144 w systemie Oracle Database:<\/p>\n<ol>\n<li>Oracle Database stosuje skr\u00f3con\u0105 ewaluacj\u0119 (short-circuit evaluation) warunk\u00f3w logicznych &#8211; przyk\u0142adowo, gdy w warunku &#8222;WHERE a=1 AND b=2 AND c=3&#8221; niespe\u0142niony b\u0119dzie pierwszy predykat (a=1), to w og\u00f3le nie zostan\u0105 przebadane pozosta\u0142e predykaty, gdy\u017c wynik jest ju\u017c znany (false).<\/li>\n<li>Oracle Database ewaluuje predykaty w warunku WHERE w nast\u0119puj\u0105cej kolejno\u015bci <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/18\/addci\/using-extensible-optimizer.html#GUID-8EE46DDC-F955-4DD6-8EA9-AC64B1A4941F\">(dokumentacja):<\/a> (1) predykaty bez funkcji definiowanych przez u\u017cytkownika i bez podzapyta\u0144 &#8211; w kolejno\u015bci podanej w WHERE, (2) predykaty z funkcjami definiowanymi przez u\u017cytkownika, dla kt\u00f3rych optymalizator by\u0142 w stanie wyznaczy\u0107 koszty &#8211; w kolejno\u015bci rosn\u0105cych koszt\u00f3w, (3) predykaty z funkcjami definiowanymi przez u\u017cytkownika, dla kt\u00f3rych optymalizator nie by\u0142 w stanie wyznaczy\u0107 koszt\u00f3w &#8211; w kolejno\u015bci podanej w WHERE, (4) predykaty oparte o podzapytania &#8211; w kolejno\u015bci podanej w WHERE.<\/li>\n<\/ol>\n<p>Poka\u017cemy teraz kilka przyk\u0142ad\u00f3w zapyta\u0144, kt\u00f3rych wydajno\u015b\u0107 mo\u017ce ucierpie\u0107 z powodu powy\u017cszych za\u0142o\u017ce\u0144. Wykorzystamy nast\u0119puj\u0105ce obiekty \u017ar\u00f3d\u0142owe: tabel\u0119 ARMIA(ID,PLEC), zawieraj\u0105c\u0105 100 rekord\u00f3w \u017co\u0142nierzy &#8211; 90 m\u0119\u017cczyzn i 10 kobiet, tabel\u0119 SEX_TO_PLEC(SEX,PLEC), kt\u00f3ra t\u0142umaczy kody p\u0142ci pomi\u0119dzy j\u0119zykiem angielskim i polskim (2 rekordy), funkcj\u0119 POWOLNA_FUNKCJA(), kt\u00f3ra zosta\u0142a &#8222;z\u0142o\u015bliwie&#8221; zaimplementowana tak, aby po up\u0142ywie 1s zwr\u00f3ci\u0107 warto\u015b\u0107, kt\u00f3r\u0105 po prostu otrzyma\u0142a jako argument wywo\u0142ania, funkcj\u0119 SZYBKA_FUNKCJA(), kt\u00f3ra wykonuje identyczne dzia\u0142anie, lecz bez &#8222;z\u0142o\u015bliwego&#8221; op\u00f3\u017anienia.<\/p>\n<p>Oto nasze pierwsze zapytanie:<\/p>\n<p><code>select * from armia<br \/>\nwhere powolna_funkcja(id)=1<br \/>\nand szybka_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:01:40.12<\/code><\/p>\n<p>Relatywnie d\u0142ugi czas realizacji tego zapytania wynika\u0142 z konieczno\u015bci wykonania funkcji POWOLNA_FUNKCJA() dla ka\u017cdego ze 100 rekord\u00f3w tabeli. Wprawdzie warunek POWOLNA_FUNKCJA(id)=1 by\u0142 spe\u0142niony tylko przez jeden rekord, ale samo sprawdzanie wszystkich rekord\u00f3w spowodowa\u0142o 100-sekundowy czas wykonania.<\/p>\n<p>Zobaczmy, co si\u0119 stanie, gdy zmienimy kolejno\u015b\u0107 predykat\u00f3w w klauzulu WHERE:<\/p>\n<p><code>select * from armia<br \/>\nwhere szybka_funkcja(id)=1<br \/>\nand powolna_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:00:01.01<\/code><\/p>\n<p>Tym razem ka\u017cdy ze stu rekord\u00f3w tabeli zosta\u0142 zbadany najpierw przez funkcj\u0119 SZYBKA_FUNKCJA, co w ramach skr\u00f3conej ewaluacji spowodowa\u0142o odrzucenie 99 z nich i tylko dla jednego nast\u0105pi\u0142o wykonanie funkcji POWOLNA_FUNKCJA(). Wynik zapytania jest taki sam, ale wydajno\u015b\u0107 &#8211; stukrotnie lepsza.<br \/>\nNasuwa si\u0119 oczywiste pytanie, czy optymalizator zapyta\u0144 nie m\u00f3g\u0142 odpowiednio ustawi\u0107 kolejno\u015bci ewaluacji naszych funkcji-predykat\u00f3w? Nie m\u00f3g\u0142, poniewa\u017c nie potrafi\u0142 odgadn\u0105\u0107 kosztu wykonania funkcji PL\/SQL. Na szcz\u0119\u015bcie istnieje mo\u017cliwo\u015b\u0107 wyt\u0142umaczenia optymalizatorowi, \u017ce POWOLNA_FUNKCJA() jest bardzo kosztowna w wykonaniu, w przeciwie\u0144stwie do funkcji SZYBKA_FUNKCJA(). S\u0142u\u017cy do tego celu polecenie ASSOCIATE STATISTICS <a href=\"https:\/\/docs.oracle.com\/database\/121\/SQLRF\/statements_4006.htm#SQLRF01106\">(dokumentacja):<\/a><\/p>\n<p><code>associate statistics with functions powolna_funkcja default cost (100,0,0);<br \/>\nassociate statistics with functions szybka_funkcja default cost (1,0,0);<\/code><\/p>\n<p>Teraz kolejno\u015b\u0107 ewaluacji warunk\u00f3w b\u0119dzie automatycznie okre\u015blana przez optymalizator tak, aby minimalizowa\u0107 koszt wywo\u0142a\u0144 naszych funkcji PL\/SQL. Zwr\u00f3\u0107my uwag\u0119 na czas wykonania i zawarto\u015b\u0107 planu wykonania dla obu form zapisu naszego zapytania.<\/p>\n<p><code>select * from armia<br \/>\nwhere szybka_funkcja(id)=1<br \/>\nand powolna_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:00:01.01<\/code><\/p>\n<p><code>select * from armia<br \/>\nwhere powolna_funkcja(id)=1<br \/>\nand szybka_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:00:01.01<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>A teraz kolej na drugi przyk\u0142ad:<\/p>\n<p><code>select * from armia<br \/>\nwhere plec=(select plec from sex_to_plec where sex='F')<br \/>\nand powolna_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:01:40.09<\/code><\/p>\n<p>Czas wykonania jest kiepski, poniewa\u017c zgodnie z zasadami kolejno\u015bci ewaluacji predykat\u00f3w, Oracle Database w pierwszej kolejno\u015bci wykonuje funkcj\u0119 POWOLNA_FUNKCJA(), a ewentualnie dopiero p\u00f3\u017aniej ewaluuje predykat oparty o podzapytanie. Rozumiemy, \u017ce poniewa\u017c rekord\u00f3w-kobiet jest tylko 10 w ca\u0142ej tabeli, to korzystniej by\u0142oby najpierw filtrowa\u0107 je wed\u0142ug podzapytania, a dopiero p\u00f3\u017aniej wykonywa\u0107 funkcj\u0119 POWOLNA_FUNKCJA().<\/p>\n<p>Ratunkiem w takiej sytuacji mo\u017ce by\u0107 zastosowanie starej, zapomnianej ju\u017c chyba wskaz\u00f3wki-Hintu o nazwie ORDERED_PREDICATES. Wskaz\u00f3wka ta narzuca optymalizatorowi zapyta\u0144 dok\u0142adnie tak\u0105 kolejno\u015b\u0107 ewaluacji predykat\u00f3w, jaka wynika z kolejno\u015bci ich zapisania w klauzuli WHERE.<\/p>\n<p><code>select \/*+ ORDERED_PREDICATES *\/ * from armia<br \/>\nwhere plec=(select plec from sex_to_plec where sex='F')<br \/>\nand powolna_funkcja(id)=1;<br \/>\n&nbsp;<br \/>\nElapsed: 00:00:10.02<\/code><\/p>\n<p>Sukces! Teraz czas wykonania odpowiada logice zapytania &#8211; jest tylko 10 kobiet, kt\u00f3re wy\u0142awiamy za pomoc\u0105 podzapytania, a nast\u0119pnie dla ka\u017cdego z rekord\u00f3w wykonujemy nasz\u0105 1-sekundow\u0105 funkcj\u0119.<\/p>\n<p>PS. Niezale\u017cnie od wszystkiego, stosowanie funkcji PL\/SQL w klauzuli WHERE zapytania SQL jest z\u0142ym pomys\u0142em&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W przypadku z\u0142o\u017conych zapyta\u0144 SQL problem wydajno\u015bciowy mo\u017ce czasami wynika\u0107 z nieoptymalnej kolejno\u015bci ewaluacji predykat\u00f3w w klauzuli WHERE. Warto w tym miejscu przypomnie\u0107 dwa wa\u017cne fakty dotycz\u0105ce optymalizacji i wykonywania zapyta\u0144 w systemie Oracle Database: Oracle Database stosuje skr\u00f3con\u0105 ewaluacj\u0119 (short-circuit evaluation) warunk\u00f3w logicznych &#8211; przyk\u0142adowo, gdy w warunku &#8222;WHERE a=1 AND b=2 AND c=3&#8221; <a href=\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\" rel=\"nofollow\"><span class=\"sr-only\">Read more about Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES<\/span>[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[9,12,13,21],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT<\/title>\n<meta name=\"description\" content=\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT\" \/>\n<meta property=\"og:description\" content=\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES\" \/>\n<meta property=\"og:url\" content=\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\" \/>\n<meta property=\"og:site_name\" content=\"Explain IT\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-30T13:08:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-30T14:14:09+00:00\" \/>\n<meta name=\"author\" content=\"Maciej Zakrzewicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maciej Zakrzewicz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\"},\"author\":{\"name\":\"Maciej Zakrzewicz\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\"},\"headline\":\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES\",\"datePublished\":\"2018-08-30T13:08:24+00:00\",\"dateModified\":\"2018-12-30T14:14:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\"},\"wordCount\":674,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"keywords\":[\"hinty\",\"optymalizator\",\"Oracle Database\",\"wydajno\u015b\u0107\"],\"articleSection\":[\"Oracle Database\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\",\"name\":\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT\",\"isPartOf\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\"},\"datePublished\":\"2018-08-30T13:08:24+00:00\",\"dateModified\":\"2018-12-30T14:14:09+00:00\",\"description\":\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES\",\"breadcrumb\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/explainit.pl\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#website\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"name\":\"Explain IT\",\"description\":\"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.\",\"publisher\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#organization\",\"name\":\"Explain IT\",\"url\":\"https:\/\/explainit.pl\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"contentUrl\":\"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png\",\"width\":196,\"height\":64,\"caption\":\"Explain IT\"},\"image\":{\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219\",\"name\":\"Maciej Zakrzewicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g\",\"caption\":\"Maciej Zakrzewicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT","description":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/","og_locale":"pl_PL","og_type":"article","og_title":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT","og_description":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES","og_url":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/","og_site_name":"Explain IT","article_published_time":"2018-08-30T13:08:24+00:00","article_modified_time":"2018-12-30T14:14:09+00:00","author":"Maciej Zakrzewicz","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Maciej Zakrzewicz","Szacowany czas czytania":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#article","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/"},"author":{"name":"Maciej Zakrzewicz","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219"},"headline":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES","datePublished":"2018-08-30T13:08:24+00:00","dateModified":"2018-12-30T14:14:09+00:00","mainEntityOfPage":{"@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/"},"wordCount":674,"commentCount":0,"publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"keywords":["hinty","optymalizator","Oracle Database","wydajno\u015b\u0107"],"articleSection":["Oracle Database"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/","url":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/","name":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES - Explain IT","isPartOf":{"@id":"https:\/\/explainit.pl\/wordpress\/#website"},"datePublished":"2018-08-30T13:08:24+00:00","dateModified":"2018-12-30T14:14:09+00:00","description":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES","breadcrumb":{"@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/explainit.pl\/wordpress\/2018\/08\/30\/kolejnosc-ewaluacji-predykatow-w-where-associate-statistics-i-ordered_predicates\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/explainit.pl\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Kolejno\u015b\u0107 ewaluacji predykat\u00f3w w WHERE: ASSOCIATE STATISTICS i ORDERED_PREDICATES"}]},{"@type":"WebSite","@id":"https:\/\/explainit.pl\/wordpress\/#website","url":"https:\/\/explainit.pl\/wordpress\/","name":"Explain IT","description":"Autorska pracownia doradztwa i szkole\u0144 IT - Maciej Zakrzewicz - szkolenia, ekspertyzy, wdro\u017cenia. Technologie Oracle, PostgreSQL, MySQL.","publisher":{"@id":"https:\/\/explainit.pl\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/explainit.pl\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/explainit.pl\/wordpress\/#organization","name":"Explain IT","url":"https:\/\/explainit.pl\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","contentUrl":"https:\/\/explainit.pl\/wordpress\/wp-content\/uploads\/2016\/08\/explainITmini.png","width":196,"height":64,"caption":"Explain IT"},"image":{"@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/740773131bc169a2dc9c0e5e07476219","name":"Maciej Zakrzewicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/explainit.pl\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c98d020128b142a480aa35a22300a69?s=96&d=mm&r=g","caption":"Maciej Zakrzewicz"}}]}},"_links":{"self":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/612"}],"collection":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":3,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"predecessor-version":[{"id":615,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/posts\/612\/revisions\/615"}],"wp:attachment":[{"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/explainit.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}