Número de registros de todas tabelas de um banco de dados (SQL Azure)

Olá pessoas,

Quem tentou executar a query presente no meu artigo Número de registros de todas tabelas de um banco de dados, pode ter percebido que a sys.partitions simplesmente não existe (ou é inacessível) no SQL Azure.

Então, com algumas alterações na query anterior, podemos obter o mesmo resultado até mesmo no SQL Azure.

SELECT
  s.[name]
, t.[name]
, [rows] = SUM(p.[row_count])
FROM sys.schemas s
INNER JOIN sys.tables t
  ON t.[schema_id] = s.[schema_id]
INNER JOIN sys.indexes i
  ON i.[object_id] = t.[object_id]
  AND i.[type] IN (0,1)
INNER JOIN sys.dm_db_partition_stats p
  ON p.[object_id] = t.[object_id]
  AND p.[index_id] = i.[index_id]
GROUP BY
  s.[name]
, t.[name]
ORDER BY
  s.[name]
, t.[name]

Agradecimentos ao Emílio Silva, por me apresentar este desafio.

Vaga para Administrador de Banco de Dados, só que não…

E ai pessoas,

Recebi de um contato, duas vagas bacanas para Administrador de Banco de Dados, com vários requisitos ‘distintos’ e sem necessidade de saber SQL… ou seja, já se foram os dias que Administrador de Banco de Dados precisava manjar de SQL, ou simplesmente saber de Banco de Dados.

Confiram:

Sugestão para o título desta vaga: “DBA de Esquadrias de Alumínio / Data Base Aluminium”

Sugestão para o título desta vaga: “DBA de Photoshop / Dreamweaver Bitmap Administrator”

Márcio Gomes vs SQL – Fight 2

Se você tem menos de 18 anos, ou sofre de problemas cardíacos, ou não tem certeza sobre suas convicções religiosas, ou não manja de UPDATE, então NÃO PROSSIGA.

Eu e o Márcio Gomes, em uma discussão sobre SQL (o que nunca dá bons resultados), nos deparamos com o bendito do ‘WHERE 1=1′, que em um momento de insanidade transformamos em ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6′. Para testar o fruto desta capacidade criativa, optamos por comparar planos de execução, de uma query sem WHERE, outra com o ‘WHERE 1=1′ e outra com ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6′.

Veja como ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6′ tem menor custo que as outras consultas: #sqn

Enganamos o plano de execução do SQL? Onde está seu deus agora?

Para quem duvida, segue o script:

CREATE TABLE T (ID INT NOT NULL, TXT CHAR(32) NOT NULL)

;WITH CTE (ID) AS (
SELECT 1
UNION ALL
SELECT ID + 1 FROM CTE WHERE ID < 100000
)

INSERT INTO T
SELECT ID, REPLICATE('0', 32) FROM CTE
OPTION (MAXRECURSION 0)

UPDATE T SET ID = 1
UPDATE T SET ID = 1 WHERE 1 = 1
UPDATE T SET ID = 1 WHERE SQRT(SQUARE(1 + 1)) * 3 = 6