Пълно сканиране на таблицата
Параметърът FORCEPLAN илюстрира стария метод за конфигуриране в Microsoft SQL Server и Sybase. Изисква отделен SQL израз: SET FORCEPLAN ON
Тази опция засяга целия SQL код, който се изпълнява на текущата връзка, докато не издадете оператора: SET FORCEPLAN OFF
Когато FORCEPLAN е настроен на ON, базата данни извършва само основна SQL оптимизация. Обикновено използва планове за изпълнение на вложен цикъл, които работят с индекси и таблици за присъединяване в същия ред, както са изброени в клаузата FROM. Ако това е типът план, който искате, тогава SET FORCEPLAN е идеален, защото не само включва правилния план, но също така спестява време за разбор, което иначе би било изразходвано за избор от голям набор от планове, особено за обединения на много таблици. Това е, образно казано, двупосочен меч, така че го използвайте само когато знаете, че правилният ред на свързване е указан в клаузата FROM и искате да използвате вложени цикли.
5 Графика на прости SQL заявки
Превръщането на изкуството на настройката на SQL в наука изисква общ език, обща парадигма за описание и решаване на проблеми с настройката на SQL. Тази книга е първото печатно издание, което може да ви научи на метода, който ми послужи добре и на тези, на които го обясних. Наричам този метод Query Charting method.
Като всеки нов инструмент, методът за диаграмиране на заявки изисква известна предварителна инвестиция и време от бъдещия потребител. Но овладяването на този инструмент осигурява огромни награди, така че ви моля за търпение - ще бъде трудно само в самото начало. Скоро ще намерите отговори, които никой друг не би ви дал.инструмент, ще са необходими само малко усилия. И в края на изследването моят метод ще ви стане толкова познат, че, както с всеки друг добър инструмент, няма да забележите, че го използвате.
Защо е необходим нов метод?
Тъй като ви моля за търпение, ще започна, като разгледам защо имаме нужда от този нов инструмент. Защо не използвате това, което вече знаете, като информация за SQL сървър, за решаване на проблеми с производителността? Най-големият проблем при използването на SQL Server за настройка е, че той предлага твърде много и недостатъчно информация едновременно за решаване на задачата за настройка. Съществува информация за SQL Server, за да опише функционално кои колони и редове от кои таблици се нуждае приложението, при какви условия те трябва да бъдат обединени и в какъв ред да ги върне. По-голямата част от тази информация обаче е напълно неподходяща за персонализирането на заявката. От друга страна, релевантна и дори жизненоважна за настройката информация – относно разпределението на данните в таблици – напълно липсва. SQL има много общо със старите проблеми с еквивалентността, известни от математиката в началното училище, с изключение на това, че SQL сървърът е по-вероятно да пропусне необходимата информация. Проблемът Qahsu, от двата по-долу, ще ви бъде ли по-лесен за решаване?
За отдих на открито Джони приготви осем тортили, три колбаса, една лента бекон и две яйца за себе си и приятелите си Джим, Мери и Сю. Всяко момиче даде една трета от колбасите си, 25% от тортилите си и половината от яйцата си на момчетата. Джим изпусна тортила и два колбаса и миеща мечка ги открадна. Джони е алергичен към кленов сироп, а Мери имаше ягоди на половината си тортили, но всички останали поливаха тортилите с кленов сироп. Колко торти с кленов сироп изядохтевсяко дете?
(8+(0,25 X 8) -1) + (0,75 x 8/2) + (0,75 x 8) -? Естествено, вторият проблем е по-лесен за решаване.
Нито един инструмент, който познавам, няма да създаде нещо като диаграма на заявка за вас, точно както никой инструмент няма да превърне проблем с математическа еквивалентност в проста аритметика. Следователно първата ви стъпка в настройката на SQL ще бъде да преведете проблема с SQL в проблем с диаграма на заявка. Точно както преобразуването на проблеми с еквивалентността в аритметичен израз е най-трудната стъпка, вероятно ще откриете, че превеждането на проблеми с настройката на SQL в диаграми на заявки е най-трудната (или дори най-дългата) стъпка в настройката на SQL, поне първоначално. Въпреки това е обнадеждаващо, че докато човешките езици са се развивали случайно с развитието на комуникацията между сложни човешки умове, SQL е създаден като рамка за комуникация с компютри. Проблемите на еквивалентността на настройката на SQL са много по-малка област на интерес от проблемите на еквивалентността на естествен език. Докато практикувате, процесът на превод на SQL в диаграма на заявка става по-бърз и по-лесен, понякога дори можете бързо да направите този превод в главата си. След като направите диаграма на заявка и имате поне елементарно разбиране на метода на диаграмата на заявката, ще смятате повечето проблеми с настройката за тривиални.
Допълнителна и напълно непредвидена полза е, че диаграмите на заявките са ценен инструмент за намиране на цели класове от фини логически грешки в приложение, които са трудни за откриване при тестване, тъй като се срещат в доста редки и трудни случаи. В глава 7 ще обсъдя подробно как да използвате тези диаграми, за да намерите и коригирате такива логикипроблеми.