Académique Documents
Professionnel Documents
Culture Documents
Esto da como resultado una expresin, dentro del lgebra relacional que se
puede manejar ms fcilmente por el sistema:
Campos a Seleccionar
Seleccionar exclusivamente aquellos que se necesiten. No utilizar nunca
SELECT * por qu el gestor debe leer primero la estructura de la tabla antes de
ejecutar la sentencia
Si se utilizan varias tablas en la consulta especificar siempre a que tabla
pertenece cada campo, le ahorra al gestor el tiempo de localizar a que tabla
pertenece el campo. En lugar de SELECT Nombre, Factura FROM Clientes,
Facturacion
WHERE
Clientes.Nombre,
IdCliente
Facturacion.Factura
IdClienteFacturado,
WHERE
usa:
SELECT
Clientes.IdCliente
Facturacion.IdClienteFacturado.
Uso de cursores
Si la consulta utiliza cursores determina antes si se puede escribir la consulta
con un tipo de cursor ms eficaz (como uno de avance rpido) o con una nica
consulta. Las consultas nicas mejoran las operaciones de cursor.
Uso de alias
No utilizar varios alias para una sola tabla en la misma consulta para simular la
interseccin de ndices. Ya no es necesario debido a que SQL Server tiene en
cuenta automticamente la interseccin de ndices y puede utilizar varios en la
misma tabla de la consulta.
Uso de la parametrizacin
Utilizar la parametrizacin de consultas para permitir la reutilizacin de los
planes de ejecucin de consulta almacenados en la memoria cach. Si un
conjunto de consultas tiene el mismo hash de consulta y hash de plan de
consulta, podra mejorar el rendimiento creando una consulta parametrizada.
Llamar a una consulta con parmetros en lugar de a varias consultas con
valores literales permite reutilizar el plan de ejecucin de consulta almacenado
en la memoria cach.
Uso de Exists
Cuando queramos hacer una sub-consulta en una base de datos utilizando la
sentencia NOT IN, analicemos si podemos cambiar nuestro queries con el uso
de la sentencia Exists que es mucho ms eficiente que la anterior. O en todo
caso, utilizar IN en vez de NOT IN, ya que esto hace un escaneo completo en
la tabla descartando opciones a omitir.
Uso de Distinct
Utilizar distinct para excluir datos duplicados es muy usado por los
programadores para evitar errores de diseo de base de datos y as esconder
algunos duplicidad de informacin, pero esto es un grave error. Es una de las
sentencias que ms necesita hacer I/O en el disco y forzar bastante el
procesador. Por tal motivo, si no es necesario evitemos utilizarla.
Uso de Tops
Cuando se quiere traer un grupo de registros es mejor utilizar la sentencia Top
y no Rowcount, ya que esta ltima presenta inconvenientes con listas no
ordenadas. En cambio, si la lista es ordenada es ms eficiente que la sentencia
Top.
Uso de ORDER BY
Usar ORDER BY en las QUERIES que se lancen slo si es absolutamente
indispensable. Es decir, que si es posible realizar la ordenacin en el lado del
cliente siempre ser mejor que realizarla desde el lado del servidor SQL Server.
En caso de que sea absolutamente necesario realizar la ordenacin en el lado
del servidor SQL Server deberemos atender a las siguientes recomendaciones:
Bibliografa