sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:¿debería usar tablas de esquema de información sobre tablas de sistema?

A menos que esté escribiendo una aplicación que sepa con certeza que necesitará ser portátil o que solo desee información bastante básica, para empezar, usaría de forma predeterminada las vistas del sistema propietario de SQL Server.

El Information_Schema las vistas solo muestran objetos que son compatibles con el estándar SQL-92. Esto significa que no hay una vista de esquema de información ni siquiera para construcciones bastante básicas, como índices (estos no están definidos en el estándar y se dejan como detalles de implementación). Por no hablar de las características propietarias de SQL Server.

Además, no es la panacea para la portabilidad que uno puede suponer. Las implementaciones todavía difieren entre los sistemas. Oracle no lo implementa "listo para usar" en absoluto y los documentos de MySql dicen:

Los usuarios de SQL Server 2000 (que también sigue el estándar) pueden notar una gran similitud. Sin embargo, MySQL ha omitido muchas columnas que no son relevantes para nuestra implementación y ha agregado columnas que son específicas de MySQL. Una de esas columnas es la columna MOTOR en la tabla INFORMATION_SCHEMA.TABLES.

Incluso para las construcciones SQL básicas, como las restricciones de clave externa, el Information_Schema Las vistas pueden ser dramáticamente menos eficientes para trabajar que el sys. vistas, ya que no exponen identificadores de objetos que permitirían consultas eficientes.

p.ej. Consulte la pregunta Ralentización de la consulta SQL de 1 segundo a 11 minutos, ¿por qué? y planes de ejecución.

INFORMACIÓN_ESQUEMA

sistema