Optimizing


Optimizer

Inside the database engine, there is an optimizer. The optimizer is in charge of the database. This optimizer has authority over all of selects, joins, and set operations. The optimizer determines what sequence of the selects and joins will answer the request to the database most efficiently, and with the fewest casualties (time and resources). The optimizer has an SQL compiler, which produces an executable program. This executable program produces an execution plan. The optimizer uses the plan for strategizing. The plan is the optimizer's description of how the query will run against the database.
En toda base de datos existe un optimizador. El optimizador está a cargo de la base de datos. Este tiene autoridad sobre todas las selecciones, junturas y operaciones de conjuntos. El trabajo del optimizador es determinar la secuencia de las selecciones y las junturas para dar respuesta en una forma eficiente en tiempo y en recursos. El optimizador tiene un compilador de SQL que produce un programa ejecutable. Este programa ejecutable produce un plan de ejecución. El optimizador usa el plan para crear una estrategia.

Tip
The optimizer looks at the table statistics and indexes to help find the best way to handle the request. The plan can change, if indexes are added or dropped or if table size changes. In fact, the plan changes whenever changes are made to the SQL statement that produced the execution plan.
El optimizador consulta las estadísticas e índices de las tablas para ayudar a encontrar la mejorar manera de procesar la solicitud. El plan puede cambiar si se agregan o eliminan índices de una tabla, o si el tamaño de la tabla cambia. De hecho, el plan cambia cuando hay cambios en el comando de SQL que produce el plan de ejecución.

Tip
Because sub-queries tend to involve a greater overhead in the use of temporary tables to evaluate the answer, avoid the use of sub-queries to implement JOINs.
Ya que las sub-consultas requieren más recursos (tal como tablas temporales para evaluar la respuesta) se debe evitar el uso de las sub-consultas para juntar información de varias tablas.

Tip
Try to use OR instead of IN, as shown in the code below.
Trate de usar OR en lugar de IN, como se muestra en el código de abajo.

OR
SELECT name
FROM patient
WHERE zip=94596 OR zip=98488 OR zip=90707;

IN
SELECT name
FROM patient
WHERE zip IN(94596, 98488, 90707);


Tip
Try to use <= and >= instead of BETWEEN, as shown in the code below.
Trate de usar <= y >= en lugar de BETWEEN, como se muestra en el código de abajo.

SQL
SELECT name
FROM patient
WHERE patient_id >= 1000 AND patiend_id <= 7010;

BETWEEN
SELECT name
FROM patient
WHERE patiend_id BETWEEN 1000 AND 7010;


Tip
Put the part of your WHERE clause that has the least restrictive values on the top and build the more restrictive clauses on the bottom (Oracle processes the query from the bottom to the top.) For instance, suppose 80% of the employees are male and, only 5% are under 22 years old, therefore the command shown below is efficient.
Coloque la parte WHERE que tiene los valores menos restrictivos en la parte superior y coloque las clausulas más restrictivas en la parte inferior. (Oracle procesa la consulta de abajo hacia arriba.) Por ejemplo, suponga 80% de los empleados son hombres y, solo 5% tienen menos de 22 años de edad, por lo tanto el comando mostrado debajo es eficiente.

SQL
SELECT name
FROM employee
WHERE gender = 'Male'
AND age < 22;


Tip
De-normalize large 3NF tables and create smaller summary tables. The reason is users ask for the same data over and over again, and the data doesn't change, then it makes sense to put the data in a format the users need. Give users what they want and provide it to them in the most direct way possible.
Des-normalize tablas grandes en 3NF y cree tablas resumen pequeñas. La razón es porque los usuarios preguntan por la misma información una y otra vez, y los datos no cambian. Entonces, tiene mucho sentido colocar los datos en el formato en el que el usuario los necesita. Dale al usuario lo que quiere y proporciónaselo en la forma más directa posible.

Problem 1
Discuss if the addresses of clients must be stored in a single column called: address or in several tables, such as: street with street_id, street_name, neighborhood with neighborhood_id, neighborhood_name, city with city_id, name and state_id, etc.
Discuta si se debe guardar la dirección de los clientes en un sola columna llamada direccion o en su lugar se debe crear varias tablas, como por ejemplo: calle con calle_id, nombre_calle, colonia con colonia_id, colonia_nombre, city con ciudad_id, nombre y estado_id, etc.

Problem 2
Discuss if the name of clients must be stored in a single column called: client_name or in several tables, such as: first_name with first_name_id, name, last_name with last_name_id, name, etc.
Discuta si se debe guardar el nombre de los clientes en un sola columna llamada nombre_cliente o en su lugar se debe crear varias tablas, como por ejemplo: nombre con nombre_id, nombre_descr, apellido con apellido_id, apellido_descr, etc.

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home