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 / user-36614

BanksySan's questions

Martin Hope
BanksySan
Asked: 2017-08-12 07:45:15 +0800 CST

Existe um limite superior para o tipo SqlDbType.Structured ADO.NET?

  • 6

Existe um limite superior para o número de linhas\tamanho total do SqlDbType.Structuredtipo ao enviar dados para um parâmetro de tabela em um sproc?

Não consigo encontrar nada que sugira que exista, então estou assumindo que haveria apenas um tempo limite se um conjunto de dados gigante fosse enviado.

Estou olhando para 2000 linhas, então nada assustador. Eu só quero antecipar qualquer explosão em potencial.

sql-server ado.net
  • 1 respostas
  • 2180 Views
Martin Hope
BanksySan
Asked: 2017-06-19 04:18:10 +0800 CST

Obter linhas sem um evento 'end'

  • 1

Eu tenho uma série de linhas representando start ( S) ou e ( E) é umthing

+----+-------+-------+
| Id | Event | Thing |
+----+-------+-------+
|  1 | S     | A     |
|  2 | E     | A     |
|  3 | S     | B     |
|  4 | E     | B     |
|  5 | S     | C     |
|  6 | S     | D     |
|  7 | S     | E     |
+----+-------+-------+

Estou tentando obter as linhas que não têm evento final.

SELECT [a].[Id] AS [ID a],
       [a].[Event] AS [Event a],
       [b].[Id] AS [ID b],
       [b].[Event] AS [Event b]
  FROM [dbo].[TimeSeries] AS [a]
  LEFT OUTER JOIN [dbo].[TimeSeries] AS [b]
    ON [b].[Thing] = [a].[Thing]
   WHERE [a].[Event] = 'S'
   AND [b].[Event] = 'E'

Isso retorna

+------+---------+------+---------+
| ID a | Event a | ID b | Event b |
+------+---------+------+---------+
|    1 | S       |    2 | E       |
|    3 | S       |    4 | E       |
+------+---------+------+---------+

É aqui que estou ficando preso.

Eu quero todos os IDs que não estão na ID acoluna nem na ID bcoluna. Então eu estou supondo LEFT JOINencontrar todas as linhas que não têm evento final.

NB: A tabela real é um log SSIS com muitos milhões de linhas.

t-sql
  • 1 respostas
  • 58 Views
Martin Hope
BanksySan
Asked: 2017-03-23 04:35:32 +0800 CST

O que é uma RESTRIÇÃO COM CHECK CHECK?

  • 36

Eu tenho algum T-SQL gerado automaticamente, que provavelmente é válido, mas realmente não entendo.

ALTER TABLE [dbo].[MyTable]
WITH CHECK
CHECK CONSTRAINT [My_FORIEGN_KEY];

Eu sei o que é uma restrição de chave estrangeira, mas qual é o CHECK CHECK?

sql-server t-sql
  • 2 respostas
  • 53847 Views
Martin Hope
BanksySan
Asked: 2016-12-20 10:38:12 +0800 CST

Obter ID da linha no agregado

  • 5

Eu tenho a seguinte consulta para obter os valores correspondentes à última data:

SELECT MAX(RowAddedDate), X, Y
FROM dbo.MyTable
GROUP BY X, Y

Isso é bom, mas preciso obter o ID de cada linha nesta consulta. Se eu adicionar o ID, recebo tudo, pois o ID precisa estar no arquivo GROUP BY.

Como resolvo isso?

sql-server t-sql
  • 3 respostas
  • 6507 Views
Martin Hope
BanksySan
Asked: 2016-12-20 09:49:52 +0800 CST

Coluna inválida para SELECT com OVER

  • 0

Eu tenho a seguinte consulta:

SELECT 1,
       row_number() over (partition by lower(X), lower(Y) order by X DESC) AS rn
FROM dbo.MyTable
WHERE rn = 1

Quando executo, recebo um erro Invalid column name 'rn'..

Não entendo por que estou recebendo isso, conforme rndefinido na SELECTparte.

Eu tentei substituir o WHEREpor um HAVINGtambém.

sql-server t-sql
  • 1 respostas
  • 874 Views
Martin Hope
BanksySan
Asked: 2016-11-22 05:41:06 +0800 CST

Desempenho de indexação inesperado (tudo é igual)

  • 1

Eu queria ver os efeitos de ter índices em colunas calculadas, então criei uma tabela como esta:

CREATE TABLE [Domain\UserName].[CompColIndexing](
    [a] [int] NOT NULL,
    [nonIndexedNonPersisted]  AS ([a]+(1)),
    [nonIndexedPersisted]  AS ([a]+(1)) PERSISTED,
    [IndexedNonPersisted]  AS ([a]+(1)),
    [IndexedPersisted]  AS ([a]+(1)) PERSISTED
) ON [DATA]

Adicionei 800,000linhas a isso, com o valor para apercorrer 0até 9.

Os seguintes índices foram adicionados:

CREATE NONCLUSTERED INDEX [IX_DJB_CompNonPersisted] ON [Domain\UserName].[CompColIndexing] 
(
    [IndexedNonPersisted] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [DATA]
GO

CREATE NONCLUSTERED INDEX [IX_DJB_CompPersisted] ON [Domain\UserName].[CompColIndexing] 
(
    [IndexedPersisted] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [DATA]
GO

Então eu executei algumas ORDER BYcláusulas para ver quais diferenças de desempenho eu obteria, planejando depois para ver como a mudança de valores aafetaria as coisas.

SELECT *
FROM [EMEA\BanksD].[CompColIndexing]
ORDER BY a

SELECT *
FROM [EMEA\BanksD].[CompColIndexing]
ORDER BY nonIndexedNonPersisted

SELECT *
FROM [EMEA\BanksD].[CompColIndexing]
ORDER BY IndexedNonPersisted

SELECT *
FROM [EMEA\BanksD].[CompColIndexing]
ORDER BY nonIndexedPersisted

SELECT *
FROM [EMEA\BanksD].[CompColIndexing]
ORDER BY IndexedPersisted

Porém, inesperadamente, descobri que obtenho exatamente o mesmo resultado para cada uma das consultas:

Saída do Profiler

Eu esperava pelo menos que a SORToperação na primeira consulta fosse mais lenta, pois essa não é indexada.

O que está acontecendo aqui?

A cardinalidade é baixa propositalmente, na verdade, preciso classificar em três valores diferentes.

estou a usarMicrosoft SQL Server 2008 R2 (SP2) - 10.50.4042.0 (X64)

Planos de execução reais disponíveis em: https://www.brentozar.com/pastetheplan/?id=S10MTuxGg

sql-server sql-server-2008-r2
  • 1 respostas
  • 92 Views
Martin Hope
BanksySan
Asked: 2016-10-19 10:52:19 +0800 CST

Encontre o valor que OPTIMIZE FOR UNKNOWN está usando

  • 7

Se eu tiver um OPTIMIZE FOR UNKNOWNem meu procedimento armazenado, posso ver qual valor o banco de dados decidiu ser o ideal?

sql-server performance
  • 2 respostas
  • 367 Views
Martin Hope
BanksySan
Asked: 2016-10-18 12:50:38 +0800 CST

Maneira rápida de carregar uma grande quantidade de dados de teste

  • 4

Estou tentando preencher uma tabela com uma carga de dados fictícios para que eu possa otimizar, etc.

Eu tenho o seguinte:

WHILE @RowCount < 3000000
BEGIN

    SELECT @Random = ROUND(@Upper * RAND(), 0)

    INSERT INTO [dbo].[Test]
               ([Id]
               ,[OtherKey]
               ,[Description])
         VALUES
               (@RowCount
               ,@Random
               ,CAST(@Random AS VARCHAR(max)))

    SET @RowCount = @RowCount + 1
END

No entanto, isso parece muito lento.

Existe uma maneira melhor de automatizar o carregamento de linhas semi-aleatórias em uma tabela de banco de dados?

Novo script

Este parece ser bem rápido:

USE [Test]
GO

/****** Object:  Table [dbo].[Test]    Script Date: 17/10/2016 21:22:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

USE [Test]
GO

CREATE TABLE [dbo].[Test](
    [Id] [int] NOT NULL,
    [OtherKey] [int] NOT NULL,
    [Description] [varchar](max) NOT NULL,
    [Time] [datetime] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

-- Add sample data

DECLARE @RowCount INT
DECLARE @Random INT
DECLARE @Upper INT

SET @Upper = 1000
SET @RowCount = 0

WHILE @RowCount < 1000000
BEGIN

    SELECT @Random = ROUND(@Upper * RAND(), 0)

    INSERT INTO [dbo].[Test]
               ([Id]
               ,[OtherKey]
               ,[Description]
               ,[Time])
         VALUES
               (@RowCount
               ,@Random
               ,CAST(@Random AS VARCHAR(max))
               ,GETDATE())

    SET @RowCount = @RowCount + 1
END

GO

/****** Object:  Index [IX_ID]    Script Date: 17/10/2016 22:18:48 ******/
CREATE CLUSTERED INDEX [IX_ID] ON [dbo].[Test]
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO



/****** Object:  Index [IX_OtherKey]    Script Date: 17/10/2016 21:22:46 ******/
CREATE NONCLUSTERED INDEX [IX_OtherKey] ON [dbo].[Test]
(
    [OtherKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

Se alguém tiver alguma maneira mais rápida, ficaria muito feliz em ouvi-la.

sql-server performance
  • 1 respostas
  • 3953 Views
Martin Hope
BanksySan
Asked: 2016-10-18 07:41:03 +0800 CST

Alternativa segura para exec(sql)

  • 4

Eu encontrei algumas exec(sql)declarações enterradas no código. Eles estão lá por um bom motivo, porque essas instruções não podem ser escritas diretamente, mas são um vetor de ataque óbvio.

Existe uma alternativa segura para exec(some sql)? Algo que será paremetrizado corretamente, incluindo nomes de tabelas em declarações?

sql-server t-sql
  • 2 respostas
  • 3185 Views
Martin Hope
BanksySan
Asked: 2016-10-17 09:27:33 +0800 CST

Por que este plano de execução tem Compute Scalars?

  • 9

Eu tenho uma SELECTdeclaração simples.

USE [AdventureWorks2014]
GO

SELECT *
FROM Sales.SalesOrderDetail sod

O plano de execução tem dois arquivos Compute Scalar.

Plano de execução mostrando escalares de computação Por que é isso? Eu esperava apenas obter o Index Scanou talvez um Table Scan?

O primeiro (mais à direita) tem

 [[AdventureWorks2014].[Sales].[SalesOrderDetail].LineTotal] = Scalar Operator(isnull(CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPrice] as [sod].[UnitPrice],0)*((1.0)-CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPriceDiscount] as [sod].[UnitPriceDiscount],0))*CONVERT_IMPLICIT(numeric(5,0),[AdventureWorks2014].[Sales].[SalesOrderDetail].[OrderQty] as [sod].[OrderQty],0),(0.000000)))

Quando o segundo tem:

[[sod].LineTotal] = Scalar Operator([AdventureWorks2014].[Sales].[SalesOrderDetail].[LineTotal] as [sod].[LineTotal])
sql-server performance
  • 1 respostas
  • 3972 Views
Martin Hope
BanksySan
Asked: 2016-10-16 11:45:53 +0800 CST

Como um Index Seek satisfaz essa consulta?

  • 0

Estou usando o banco de dados AdventureWorks e executando a seguinte consulta:

SELECT ct.Name
FROM Person.ContactType ct
WHERE ct.Name LIKE 'Own%'

O plano de execução mostra que está usando um Index Seek (NonClustered), porém, há apenas um índice na tabela; sendo essa a chave primária em ContactTypeID.

insira a descrição da imagem aqui

A tabela é definida da seguinte forma:

/****** Object:  Table [Person].[ContactType]    Script Date: 15/10/2016 20:43:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [Person].[ContactType](
    [ContactTypeID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [dbo].[Name] NOT NULL,
    [ModifiedDate] [datetime] NOT NULL,
 CONSTRAINT [PK_ContactType_ContactTypeID] PRIMARY KEY CLUSTERED 
(
    [ContactTypeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [Person].[ContactType] ADD  CONSTRAINT [DF_ContactType_ModifiedDate]  DEFAULT (getdate()) FOR [ModifiedDate]
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primary key for ContactType records.' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType', @level2type=N'COLUMN',@level2name=N'ContactTypeID'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Contact type description.' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType', @level2type=N'COLUMN',@level2name=N'Name'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Date and time the record was last updated.' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType', @level2type=N'COLUMN',@level2name=N'ModifiedDate'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Default constraint value of GETDATE()' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType', @level2type=N'CONSTRAINT',@level2name=N'DF_ContactType_ModifiedDate'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Primary key (clustered) constraint' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType', @level2type=N'CONSTRAINT',@level2name=N'PK_ContactType_ContactTypeID'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Lookup table containing the types of business entity contacts.' , @level0type=N'SCHEMA',@level0name=N'Person', @level1type=N'TABLE',@level1name=N'ContactType'
GO
sql-server index
  • 1 respostas
  • 50 Views

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