Tipos Numéricos y de Texto
numérico vs flotante, texto vs varchar, conceptos básicos de intercalación. Patrones prácticos de PostgreSQL para consultas de producción.
Receta
SELECT 0.1::float8 + 0.2::float8 AS float_sum,
0.1::numeric + 0.2::numeric AS numeric_sum;
SELECT 'café' COLLATE "en_US" < 'cafe' COLLATE "en_US";Cuándo usar esto: Este patrón aparece en el SQL de aplicaciones o informes que mantienes.
Ejemplo de Trabajo
CREATE TABLE app.products (
sku text NOT NULL PRIMARY KEY,
price numeric(10,2) NOT NULL,
description text NOT NULL
);Lo que esto demuestra:
- SQL ejecutable contra esquemas de ejemplo
- Sintaxis idiomática de PostgreSQL
- Patrones seguros para revisión con EXPLAIN
Análisis Profundo
Cómo Funciona
- PostgreSQL analiza el SQL en un árbol de consulta.
- El planificador estima los costos usando estadísticas.
- El ejecutor devuelve filas al protocolo del cliente.
Notas
- Prefiere SQL legible; los optimizadores reescriben internamente.
- Prueba con recuentos de filas similares a producción.
Errores Comunes
- SELECT * en aplicaciones - Las nuevas columnas rompen los serializadores. Solución: Enumera las columnas explícitamente.
- Comparaciones de NULL - = NULL siempre es desconocido. Solución: Usa IS NULL o IS DISTINCT FROM.
- Conversiones implícitas - Escaneos secuenciales inesperados en tipos no coincidentes. Solución: Haz coincidir los tipos del predicado con los tipos de columna.
- Consultas ilimitadas - Falta LIMIT en tablas grandes. Solución: Paginación o agregación intencional.
- Estadísticas obsoletas - Planes incorrectos después de una carga masiva. Solución: Ejecuta ANALYZE en las tablas afectadas.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Generador de consultas ORM | El equipo se estandariza en una pila | El SQL complejo se vuelve opaco |
| Vista materializada | Repetir agregaciones costosas | Necesita estrategia de actualización |
| Réplica de almacén de datos | Escaneos pesados de BI | No para latencia OLTP |
Preguntas Frecuentes
¿Debo formatear SQL en cadenas de aplicación?
Usa cadenas de plantilla multilínea o archivos SQL; valida en CI.
¿Cuándo es suficiente DISTINCT?
Cuando necesitas filas únicas sin agregados.
¿ORDER BY perjudica a los índices?
El ordenamiento puede usar el orden del índice si la consulta coincide con las columnas del índice.
Relacionado
- Conceptos Básicos de Tipos de Datos - resumen
Versiones de la Pila: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, y PostGIS 3.5+.