AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 251059
Accepted
user9516827
user9516827
Asked: 2019-10-15 11:12:10 +0800 CST2019-10-15 11:12:10 +0800 CST 2019-10-15 11:12:10 +0800 CST

Coluna como uma coluna Incluída ou como uma coluna-chave

  • 772

Eu tenho uma consulta que tem uma condição opcional where na coluna classID(not unique). Este mesmo classIDestá sendo exibido como uma coluna de seleção em várias outras consultas. Atualmente eu tenho classID como uma coluna incluída em um índice idx, então acho que o idx será usado quando classID estiver na instrução select. Eu tenho que criar um índice não clusterizado para o classID como uma coluna de chave quando a consulta tem onde condição para classID.?

Confuso sobre isso se deve criar separado non-clustered indexespara todas as colunas da cláusula where.?

sql-server optimization
  • 1 1 respostas
  • 282 Views

1 respostas

  • Voted
  1. Best Answer
    HandyD
    2019-10-15T20:56:49+08:002019-10-15T20:56:49+08:00

    Atualmente eu tenho classID como uma coluna incluída em um índice idx, então acho que o idx será usado quando classID estiver na instrução select.

    Não, na verdade não. O índice selecionado no plano de consulta depende do otimizador de consulta decidir qual índice melhor satisfaz os requisitos de consulta. Se suas colunas de chave de índice corresponderem ou forem muito semelhantes aos seus predicados de consulta, ela provavelmente selecionará esse índice.

    Ter ClassID nas colunas INCLUDE significa simplesmente que o plano de consulta não exigirá pesquisas de chave para recuperar esses dados adicionais sobre as linhas retornadas na consulta. Se ClassID for um predicado, tê-lo nas colunas INCLUDE de um índice não fará com que o otimizador selecione definitivamente esse índice.

    Eu tenho que criar um índice não clusterizado para o classID como uma coluna de chave quando a consulta tem onde condição para classID.?

    Você precisa criar índices que melhor satisfaçam o acesso de dados mais comum. Por exemplo, se você criar vários índices com colunas de chave única e muitas colunas de inclusão, mas suas consultas tiverem muitos predicados e poucas colunas de seleção, é improvável que sua estratégia de indexação seja tão eficiente quanto deveria.

    Um bom ponto de partida/regra geral enquanto você está começando com o ajuste de índice\design é não mais que 5 índices por tabela e não mais que 5 colunas por índice. Isso ajuda você a ser mais seletivo sobre quais índices você cria e como os projeta para satisfazer a maioria das consultas.

    Não é uma regra rígida e rápida, apenas ajuda você a pensar sobre sua estratégia de índice em relação às suas consultas.

    Confuso sobre isso se deve criar índices não clusterizados separados para todas as colunas da cláusula where.?

    Você não cria índices separados para cada predicado porque o otimizador provavelmente usará apenas um deles e, em seguida, fará várias pesquisas de chave. Projete seus índices com esta diretriz básica:

    • A cláusula WHERE e as colunas JOIN em sua consulta devem ser Colunas-chave em seu Índice.
    • As colunas SELECT em sua consulta devem ser Incluir colunas em seu índice.

    Essas não são regras rígidas e rápidas e, novamente, não projetam seus índices para satisfazer uma única consulta. Você precisa traçar o perfil de suas características de acesso a dados e desenvolver uma estratégia de indexação para satisfazer o maior número de consultas com o menor número de índices para máxima eficiência.

    Alguns bons recursos:

    Noções básicas de índice do SQL Server

    Guia de design e arquitetura de índice do SQL Server

    Design Básico e Diretrizes do Índice do SQL Server

    Projetando índices não agrupados eficazes

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve