SQL или езикът за структурирани заявки ни позволява да събираме данни от база данни чрез заявки. Той също така ни позволява да вмъкваме, актуализираме и изтриваме тези данни.
В тази публикация в блога ще се съсредоточим върху това как да извличаме данни и да ограничаваме резултатите с помощта на SQL.
Защо трябва да ограничавате резултатите от SQL заявките?
Базата данни обикновено е огромна колекция от данни. Понякога не е необходимо да извличаме всички резултати. За да ограничим резултатите, можем да оптимизираме заявката.
Ограничаването на резултатите от заявките е важно за производителността на DB. Извличането на голям резултат, когато не се изисква, води до допълнително натоварване на базата данни и оказва влияние върху потребителското изживяване.
Как да ограничим резултатите от заявките в SQL
Синтаксисът е различен за SQL Server, Oracle и MySQL за ограничаване на данните.
- MySQL използва
LIMIT. - ORACLE използва
FETCH FIRST. - MS Access и SQL Server използват
TOP.
Ще видим примери за това как работи всеки един от тях в подробности по-долу.
Демонстрационна база данни
Имаме следната таблица с име students с техните подробности, както можете да видите по-долу:
| ID | Име | Пол |
|---|---|---|
| 1 | Райън | М |
| 2 | Джоана | F |
| 3 | Миранда Андерсен | F |
| 4 | Далия Мата | F |
| 5 | Лилиана Бойд | F |
| 6 | Лекси Шарп | М |
| 7 | Jazlene Cordova | F |
| 8 | Брайсен Вернер | М |
| 9 | Кариса Търнър | F |
| 10 | Айша Додсън | F |
| 11 | Айдън Рийвс | М |
Как да ограничим заявка в MySQL
По-долу е синтаксисът за MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Като пример ще изберем първите 5 записа от таблицата.
Нека използваме нашата таблица students за тази демонстрация.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5; Изход:
Как да комбинирате LIMIT с ORDER BY
Когато комбинирате LIMIT с ORDER BY, можете да получите по-значими резултати. Например можем да използваме това, за да намерим първите 5 студенти, които са отбелязали повече от 70% на изпита си.
Нека поръчаме нашата маса students с колоната name и изберете първите 5 от резултата. Можете да направите това по следния начин:
SELECT * FROM students
order by name
LIMIT 5; Изход:
Как да ограничим резултатите – синтаксис на Oracle
По-долу е еквивалентният синтаксис за първия ни пример в Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY; В по-старите версии на Oracle можете да използвате ROWNUM, за да ограничите броя на редовете, върнати от заявка.
Пример:
SELECT * FROM
students
WHERE ROWNUM < 5; Как да ограничим резултатите в SQL – синтаксис MS Access
По-долу е еквивалентният синтаксис за първия ни пример в MS Access.
SELECT TOP 5 * FROM students;
Приключване
Функционалността LIMIT може да бъде много мощна за оптимизиране на заявки, когато се комбинира със сортиране. Ефективните заявки са по-леки за системата и бързи за потребителя. Винаги се препоръчва да ОГРАНИЧИТЕ резултатите, където е приложимо.