Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión o
creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición.
Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.
Revisión actual |
Tu texto |
Línea 211: |
Línea 211: |
|
| |
|
| ==== Pregunta 8 ==== | | ==== Pregunta 8 ==== |
|
| |
| El optimizador de consultas aplica heurísticas que, junto con datos estadísticos que colecciona, permiten elegir planes de ejecución probablemente muy buenos.
| |
|
| |
| Una de estas heurísticas consiste en llevar las selecciones lo más cerca posible de las hojas. Si la condición que se evalúa tiene un alto grado de selectividad, entonces podremos descartar rápidamente datos que serán innecesarios.
| |
|
| |
| Por ejemplo, si queremos hacer
| |
|
| |
| SELECT FirstName, SubjectName
| |
| FROM Students, PassedSubjects
| |
| WHERE Students.ID = PassedSubjects.StudentID
| |
| AND Students.FirstName = 'Edgar'
| |
|
| |
| Es posible que el optimizador note que Students.FirstName = 'Edgar' es muy selectivo, y convenga hacer esta selección antes que el JOIN con la tabla de PassedSubjects.
| |
|
| |
| Otra heurística, que usualmente conflictúa con la anterior, es evitar bajar las selecciones a las hojas para poder aprovechar índices sobre los datos.
| |
|
| |
| Por ejemplo, si cambiamos la condición
| |
|
| |
| SELECT FirstName, SubjectName
| |
| FROM Students, PassedSubjects
| |
| WHERE Students.ID = PassedSubjects.StudentID
| |
| AND Students.Gender = 'F'
| |
|
| |
| En este caso podemos pensar que la selectividad es bastante baja (˜50%). Es posible que el optimizador viendo esto elija no hacer esta selección sino hasta después de hacer el JOIN, aprovechando para esta operación índices que existan sobre Students.ID (probablemente índice cluster) y PassedSubjects.StudentID.
| |