Usuário com melhor resposta
Tuning - Tabela com Varchar (max)

Pergunta
-
Boa tarde a todos,
Tenho um tabela que contem 3 colunas com varchar(max), conforme abaixo:
Codigo int 4 Coluna1 varchar 30 Coluna2 varchar 30 Data datetime 8 Coluna3 varchar MAX Coluna4 varchar MAX Coluna5 varchar 255 Coluna6 int 4 Coluna7 bit 1 Coluna8 bit 1 Coluna9 bit 1 Coluna10 nvarchar 60 Coluna11 varchar MAX Coluna12 nvarchar 60 Nesta tabela o usuário necessita trazer todas as colunas e tem um WHERE na data por dia. Esta tabela possui 216.000 registros por dia. A query esta muito lenta e passando de 10 minutos!
Alguém tem alguma sugestão?
Respostas
Todas as Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 24 de maio de 2017 17:17
- Não Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 24 de maio de 2017 17:17
-
José, Bom dia. Obrigado pela ajuda!
Segue as informações:
1 -
Somente tem o indice cluster (PK). E é pela coluna Codigo(int)
Criei um indice pela data mas o plano de execução optou por não utilizar. Custo de 88% pelo Cluster contra 12% utilizando o NCluster com a data2-
3-
Quantidade de linhas 6.806.307
(6806307 rows affected)
4-
where cast (data as date) = '2017-05-15'
-
Ramos,
O operador Select esta apresentando um Warning, provavelmente decorrente da conversão que você esta fazendo em relação a data.
Você realmente precisa realizar esta conversão?
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
-
-
Bom dia ramos_sa
1) posta os campos que são retornados pelo select da sua tabela??,
algo assim
select NomeCampo1, NomeCampo2,NomeCampo3.....
from NomeTabela
2) Posta o Resultado desse select
SELECT OBJECT_NAME(S.object_id) AS table_name, I.name AS index_name, S.user_seeks, S.user_scans, s.user_lookups FROM sys.dm_db_index_usage_stats AS S INNER JOIN sys.indexes AS i ON S.object_id = I.object_id AND S.index_id = I.index_id WHERE S.object_id = OBJECT_ID(N'Schema.SuaTabela', N'U');
Wesley Neves
- Editado Wesley Neves quinta-feira, 25 de maio de 2017 12:04 Complemento
-
Ramos_sa, Então, se o warning sumiu isso é um indicador que realmente as estatísticas internas e dos próprios objetos estavam desatualizadas.
Em relação ao paralelismo como o José Diz destacou ele não pode ser tratado como algo ruim dependendo da situação ele poderá nos ajudar, para tal o uso da table hint MaxDop para gerenciar e alterar a mudança do comportamento.
No que se relaciona a divisão ou alteração das colunas, sinceramente temos que analisar o que poderá impactar de forma positiva ou negativa do seu ambiente.
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
- Editado Junior Galvão - MVPMVP quarta-feira, 31 de maio de 2017 00:49