O ile nie piszesz aplikacji, o której wiesz, że będzie musiała być przenośna lub potrzebujesz tylko dość podstawowych informacji, domyślnie używałbym zastrzeżonych widoków systemowych SQL Server na początek.
Information_Schema
widoki pokazują tylko obiekty zgodne ze standardem SQL-92. Oznacza to, że nie ma widoku schematu informacji dla nawet dość podstawowych konstrukcji, takich jak indeksy (nie są one zdefiniowane w standardzie i są pozostawione jako szczegóły implementacji). Nie mówiąc już o jakichkolwiek własnościowych funkcjach SQL Server.
Ponadto, jak można by przypuszczać, nie jest to panaceum na przenośność. Implementacje nadal różnią się między systemami. Oracle w ogóle nie implementuje go „po wyjęciu z pudełka”, a dokumentacja MySql mówi:
Użytkownicy SQL Server 2000 (który również jest zgodny ze standardem) mogą zauważyć duże podobieństwo. Jednak MySQL pominął wiele kolumn, które nie są istotne dla naszej implementacji, i dodał kolumny, które są specyficzne dla MySQL. Jedną z takich kolumn jest kolumna ENGINE w tabeli INFORMATION_SCHEMA.TABLES.
Nawet w przypadku konstrukcji typu bread and butter SQL, takich jak ograniczenia klucza obcego, Information_Schema
widoki mogą być znacznie mniej wydajne w obsłudze niż sys.
widoki, ponieważ nie ujawniają identyfikatorów obiektów, które umożliwiłyby wydajne zapytania.
np. Zobacz pytanie spowolnienie zapytań SQL z 1 sekundy do 11 minut - dlaczego? i plany wykonania.
INFORMATION_SCHEMA
system