Съдържание
Някои заявки консумират повече ресурси от други. Например заявките, които връщат големи набори от резултати, и тези, които съдържат клаузи WHERE, които не са уникални, винаги са ресурсоемки. Никаква степен на интелигентност на sql бази данни не върши добра работа по оптимизиране на заявки, нито може да премахне разходите за ресурси на тези конструкции в сравнение с по -малко сложна заявка.Можем да получим същите резултати, като напишем различни SQL заявки. Но използването на най -добрата заявка е важно при разглеждане на производителността. SQL Tuning е процесът, който гарантира, че SQL изявленията, които генерира приложение, ще бъдат изпълнени в най -кратки срокове. Тези SQL заявки могат да бъдат оптимизирани за по -добра производителност.
Техники за оптимизация или SQL настройка
След това ще видим някои техники за оптимизация
СЛУЧАЙ 1: SQL заявката става по -бърза, ако използвате имената на полетата, отколкото * като заявка за всички полета на таблицата
SELECT * ОТ клиенти
По -оптимално е да запишете заявката по този начин
ИЗБЕРЕТЕ идентификатор, име, адрес ОТ клиенти
СЛУЧАЙ 2: Клаузата HAVING се използва за филтриране на редовете, след като всички редове са избрани.
SELECT предмет, брой (ученици) number_students ОТ записани WHERE subject = 'Химия' И предмет = 'История' GROUP BY предмет;
По -оптимално е да запишете заявката по този начин
SELECTматериали, брой (ученици) number_alumnos ОТ записани ГРУПА ПО предмет HAVING subject = 'Химия' И предмет = 'История'
СЛУЧАЙ 3: Понякога може да имаме повече от една подзаявки в основната заявка. Нека да видим в следния пример как да минимизираме блока на подзаявка във вашата заявка.
Консултираме се с най -възрастния и най -високоплатения служител.
SELECT име ОТ служители КЪДЕ заплата = (SELECT MAX (заплата) ОТ служители) И възраст = (SELECT MAX (възраст) ОТ служители) И категория = 'Електроника';
По -оптимално е заявката да се напише по следния начин
SELECT име ОТ служители WHERE (заплата, възраст) = (SELECT MAX (заплата), MAX (възраст) ОТ служители) И item = 'Електроника';
СЛУЧАЙ 4: Използването на оператора EXISTS, IN и табличните съединения по подходящ начин във вашата заявка е важно, тъй като те са транзакции, които забавят достъпа до данни.
Като цяло най -бавното представяне в заявка за Canda.
IN е ефективен, когато повечето от критериите за филтриране са в подзаявката.
Exist е ефективен, когато повечето от критериите за филтриране са в основната заявка.
Нека видим някои примери
Изберете * от p на продукта, където product_id IN (изберете product_id от поръчките)
По -оптимално е да го напишете по следния начин
Изберете * от продукта, където СЪЩУВА (изберете * от поръчките, където поръчки.product_id = product.product_id)
Използвайте съществуват вместо РАЗЛИЧЕН
Пример вижте какви категории са налични книги
ИЗБЕРЕТЕ РАЗЛИЧНИ категории.id, категории.категории ОТ категории, книги КЪДЕ категории.id = книги.идкатегория;
По -оптимално е заявката да се напише, както следва
ИЗБЕРЕТЕ РАЗЛИЧНИТЕ категории.id, категории.категории ОТ категории, КЪДЕТО СЪЩЕСТВУВА (ИЗБЕРЕТЕ "X" ОТ КНИГИ КНИГИ books.idcategory = categories.id);
Това са някои съвети, които ще спестят ресурси при изпълнение на sql заявки и по този начин също ще имат приложение с по -бързи отговори.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка