Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:трябва ли да използвам таблици information_schema над sys таблици?

Освен ако не пишете приложение, за което знаете, че ще трябва да бъде преносимо или искате само основна информация, аз бих използвал по подразбиране собствените системни изгледи на SQL Server за начало.

Information_Schema изгледите показват само обекти, които са съвместими със стандарта SQL-92. Това означава, че няма изглед на информационна схема дори за съвсем елементарни конструкции като индекси (Те не са дефинирани в стандарта и са оставени като подробности за внедряването.) Да не говорим за някакви собствени функции на SQL Server.

Освен това това не е панацеята за преносимост, която може да се предположи. Реализиранията все още се различават между системите. Oracle изобщо не го внедрява "извън кутията" и документите на MySql казват:

Потребителите на SQL Server 2000 (който също следва стандарта) може да забележат силно сходство. Въпреки това, MySQL е пропуснал много колони, които не са подходящи за нашата реализация, и е добавил колони, които са специфични за MySQL. Една такава колона е колоната ENGINE в таблицата INFORMATION_SCHEMA.TABLES.

Дори за SQL конструкции за хляб и масло, като ограничения на външния ключ, Information_Schema изгледите могат да бъдат значително по-малко ефективни за работа от sys. изгледи, тъй като те не разкриват идентификатори на обекти, които биха позволили ефективно запитване.

напр. Вижте въпроса забавяне на SQL заявката от 1 секунда до 11 минути - защо? и планове за изпълнение.

INFORMATION_SCHEMA

sys



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Когато използвате GETDATE() на много места, по-добре ли е да използвате променлива?

  2. Групирана конкатенация в SQL Server

  3. да мигрирате данни от MS SQL към PostgreSQL?

  4. Използване на резултата от израз (например извикване на функция) в списък с параметри на запомнени процедури?

  5. Откриване на последователни диапазони от дати с помощта на SQL