Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
Optimización de consultas indexadas = SQL

Esta es una parte de mis preguntas de exámenes anteriores:

Optimice lo siguiente y suponga que hay un índice en Members.lname:

 SELECT fname, lname FROM Members WHERE lname <> 'Rogers' AND memberType='Student';

Por lo tanto, he intentado:

 SELECT fname, lname FROM Members WHERE lname > 'Rogers' OR lname < 'Rogers'AND memberType='Student';

Intenté esto porque dividir <> fuerza el uso del índice; sin embargo, mi respuesta es incorrecta. Me preguntaba si alguien podría ayudarme y orientarme en la dirección correcta.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En mi opinión, la consulta original en sí no se puede optimizar.

Que haya un índice en lname no debería tener ningún impacto en la consulta. Todos los miembros tendrán un nombre y algunos miembros serán Rogers. Entonces, el DBMS no debe usar el índice, sino simplemente leer la tabla completa.

"Optimizar lo siguiente", sin embargo, puede permitir optimizar la consulta indirectamente creando otro índice. Este índice debe contener al menos y comenzar con memberType :

 create index idx1 on members (membertype);

El uso de este índice para la consulta probablemente dependerá de lo que haya en la tabla. Si el 99 % de los miembros son estudiantes, el DBMS debería leer la tabla completa. Si son solo unos pocos estudiantes (digamos 3%), entonces tiene sentido usar el índice, y el DBMS usaría el índice para encontrar a los estudiantes en la tabla y luego verificaría lname en el registro.

Habiendo dicho esto, podríamos querer esto en su lugar:

 create index idx2 on members (membertype, lname);

entonces el DBMS lee el índice, encuentra a los estudiantes, ve inmediatamente si el nombre es Rogers y solo accede a la tabla para los registros deseados.

Un índice aún mejor sería un índice de cobertura que contuviera todas las columnas en cuestión, por lo que ya no es necesario leer la tabla, ya que toda la información está en el índice:

 create index idx3 on members (membertype, lname, fname);

Como se mencionó, el DBMS aún puede leer la tabla completa cuando asume que la mayoría de los registros coincidirán de todos modos. Los índices son solo una oferta al DBMS que puede usar o no.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda