anúncios

Mostrando postagens com marcador MSSQL_Server. Mostrar todas as postagens
Mostrando postagens com marcador MSSQL_Server. Mostrar todas as postagens

terça-feira, 25 de agosto de 2026

Por que minha query SQL está demorando 30 segundos?

O Problema

Você tem uma tabela pedidos com milhões de registros e precisa buscar pedidos de um cliente específico. A query simples assim demora uma eternidade:

SELECT * FROM pedidos WHERE cliente_id = 12345;

O MySQL retorna 30 segundos de espera. O PostgreSQL idem. O SQLite? Nem fala.

A Causa

Tabela sem índice na coluna cliente_id. O banco faz Full Table Scan — lendo todos os registros para encontrar os que correspondem ao critério.

A Solução

1. Adicione um índice

CREATE INDEX idx_pedidos_cliente_id ON pedidos(cliente_id);

Resultado: de 30s para 0.003s

2. Use EXPLAIN para analisar

EXPLAIN SELECT * FROM pedidos WHERE cliente_id = 12345;

Veja se o plano mostra Using index (bom) ou Using filesort/Using temporary (ruim).

3. Evite SELECT *

Ruim SELECT * FROM pedidos WHERE cliente_id = 12345; Bom SELECT id, valor, data FROM pedidos WHERE cliente_id = 12345;

4. Verifique os índices existentes

SHOW INDEX FROM pedidos;

5. Use composição de índices quando necessário

-- Para queries que filtram por cliente E data CREATE INDEX idx_pedidos_cliente_data ON pedidos(cliente_id, data DESC);

Resultado Final

Métrica Antes Depois
Tempo de resposta 30s 0.003s
Full Table Scan Sim Não
Uso de memória Alto Baixo

Regra de Ouro

Se uma coluna aparece em WHERE, JOIN ou ORDER BY, considere criar um índice nela.

Índices não são mágicos — eles ocupam espaço em disco. Mas na maioria dos casos, o ganho de performance vale muito mais que o custo de armazenamento.

Feito!

quinta-feira, 1 de julho de 2021

Configurando o MS SQL Server no ambiente Docker

O objetivo deste howto é explicar os procedimentos para instalar o SGBD MS SQL Server no ambiente Docker com a imagem container oficial disponibilizada pela Microsoft no Docker Hub.

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10 .

$ mkdir $HOME/ambiente-mssql-docker && cd $HOME/ambiente-mssql-docker

Crie o arquivo docker-compose.yml, conforme o conteúdo abaixo:

docker-compose.yml
version: "3.2"
services:

  mssql-db:
    container_name: mssql-db
    image: mcr.microsoft.com/mssql/server:2019-latest
    ports:
      - "1433:1433"
    environment:
      SA_PASSWORD: "YourStrong@Passw0rd"
      ACCEPT_EULA: "Y"

Executar o build e execução do ambiente MS SQL Server na raíz do diretório ambiente-mssql-docker.

OBS: Antes de executar, verificar se a porta 1433 está disponível na sua máquina.

$ docker-compose up -d

$ docker ps -a

Aguarde e após estiver OK. Acesse o container mssql-db que subiu, conecte com o password definido conforme a política de senha padrão do SQL Server.

$ docker exec -it mssql-db bash

Ao entrar no contêiner, conecte-se localmente com a sqlcmd. O sqlcmd não está no caminho por padrão, portanto, você precisará especificar o caminho completo.

$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "YourNewStrong@Passw0rd"

Criar novo banco de dados

Após conectar no via sqlcmd no contêiner, execute:

CREATE DATABASE ExemploDB

Consultar o nome de todos os bancos de dados do servidor

SELECT Name from sys.Databases

Digite GO em um nova linha para executar os comandos anteriores.

GO

Também é possível gerenciar o SGBD MS SQL Server no ambiente Docker com DBeaver . Basta informar o IP, porta de onde foi instalado o MS SQL Server no ambiente Docker, junto com as credencias definidas no arquivo docker-compose.yml.

Feito!