Термін "саргаблі" вперше був введений P. Griffiths Selinger et al. у своїй роботі 1979 р. "Вибір шляху доступу в реляційній системі управління базами даних", опублікованій ACM . Для членів, які не входять до складу ОСББ, є його копія на веб- сторінці http://cs.stanford.edu/people/chrismre/cs345/rl/selinger.pdf
Термін визначений у цьому пункті:
Як сканування індексу, так і сегмент 1 може необов'язково приймати набір предикатів, званих аргументами пошуку (або SARGS), які застосовуються до кортежу до того, як він повернеться до абонента RSI 2 . Якщо кортеж задовольняє предикати, він повертається; в іншому випадку сканування триває, поки він не знайде кортеж, який задовольняє SARGS, або не вичерпає сегмент або заданий діапазон значень індексу. Це зменшує витрати за рахунок усунення накладних витрат на здійснення RSI-дзвінків за кортежі, які можуть бути ефективно відхилені в RSS. Не всі предикати мають форму, яка може стати SARGS. Sargable предикат є одним з форми (або який може бути введений в форму) «стовпець оператор порівняння значення». SARGS виражаються як бульне вираження таких предикатів у нормальній диз'юнктній формі.
Іншими словами, діючий предикат є таким, який може бути вирішений механізмом зберігання даних (метод доступу), безпосередньо спостерігаючи за записом таблиці або індексу. Нездатний предикат, навпаки, вимагає більш високого рівня СУБД, щоб вжити заходів. Наприклад, механізм зберігання даних WHERE lastname = 'Doe'
може визначити результат, просто переглянувши вміст поля lastname
кожного запису. З іншого боку, WHERE UPPER(lastname) = 'DOE'
вимагає виконання функції двигуном SQL, а це означає, що двигун зберігання даних повинен буде повернути всі рядки, які він читає (за умови, що вони відповідають можливим іншим, доступним предикатам) назад до SQL-двигуна для оцінки, що несе додаткові витрати на процесор .
З оригінального визначення видно, що знахідні предикати можуть застосовуватися не тільки до індексованого сканування, але і до табличного (сегмента в термінології System R) сканування, доки дотримуються умови "значення порівняння стовпців-оператора", і тому вони можуть бути оцінюється двигуном зберігання даних. Це справді так з Db2, нащадком системи R багато в чому :
Здатні до предикатів предикати не використовуються для дужки пошуку, але оцінюються з індексу, якщо такий обраний, оскільки стовпці, що беруть участь у предикаті, є частиною індексного ключа. Ці предикати також оцінюються менеджером індексів.
Здатні до предикатів дані - це предикати, які не можуть бути оцінені менеджером індексів, але можуть бути оцінені службами управління даними (DMS). Як правило, ці предикати вимагають доступу до окремих рядків із базової таблиці. У разі необхідності DMS отримає стовпці, необхідні для оцінки предиката,
Той факт, що в SQL Server розмовляючі предикати є лише тими, які можна вирішити за допомогою пошуку індексів, ймовірно, визначається неможливістю механізму його зберігання застосовувати такі предикати під час сканування таблиць.
Здатні і немарговані предикати іноді описуються як предикати "стадії 1" та "стадії 2" відповідно (це також походить від термінології Db2 ). Предикати першого етапу можна оцінити на найнижчому рівні обробки запитів під час читання записів таблиці або індексу. Рядки, які відповідають умовам 1 етапу, якщо такі є, надсилаються на наступний рівень, етап 2, оцінки.
1 - сегмент в System R - фізичне зберігання кортежів таблиці; сканування сегмента дещо еквівалентне скануванню таблиці в інших СУБД.
2 - RSI - RSS 3 Інтерфейс, інтерфейс запитів, орієнтований на кортеж. Функцією інтерфейсу, що відповідає цій дискусії, є NEXT, яка повертає наступні рядки предикатів відповідності.
3 - RSS або дослідницька система зберігання, підсистема зберігання системи R.