Resuelve el warning de Supabase sobre políticas RLS subóptimas y mejora el rendimiento de tu base de datos.
Table public.profiles has a row level security policy
que re-evalúa
auth.uid()
para cada
fila, produciendo rendimiento subóptimo.
Solución: Reemplazar auth.uid()
con
(select auth.uid())
en las políticas RLS
Este detector buscará automáticamente políticas RLS que necesiten optimización en tu base de datos.
Script SQL optimizado para la política RLS de la tabla
profiles
:
-- 🔧 OPTIMIZACIÓN RLS: Tabla profiles -- ❌ ANTES (subóptimo): -- auth.uid() se evalúa para cada fila -- ✅ DESPUÉS (optimizado): -- (select auth.uid()) se evalúa una sola vez -- Eliminar políticas existentes DROP POLICY IF EXISTS "Users can view own profile" ON profiles; DROP POLICY IF EXISTS "Users can update own profile" ON profiles; DROP POLICY IF EXISTS "Users can insert own profile" ON profiles; -- Crear políticas optimizadas CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (id = (select auth.uid())); CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (id = (select auth.uid())); CREATE POLICY "Users can insert own profile" ON profiles FOR INSERT WITH CHECK (id = (select auth.uid()));
Script SQL optimizado para las políticas RLS de la tabla
eventos
:
-- 🔧 OPTIMIZACIÓN RLS: Tabla eventos -- Optimizar políticas para mejor rendimiento -- Eliminar políticas existentes si existen DROP POLICY IF EXISTS "Users can view all events" ON eventos; DROP POLICY IF EXISTS "Users can insert own events" ON eventos; DROP POLICY IF EXISTS "Users can update own events" ON eventos; -- Crear políticas optimizadas -- Todos pueden ver eventos (lectura pública) CREATE POLICY "Users can view all events" ON eventos FOR SELECT USING (true); -- Solo usuarios autenticados pueden insertar eventos CREATE POLICY "Users can insert own events" ON eventos FOR INSERT WITH CHECK ((select auth.uid()) IS NOT NULL); -- Solo el usuario que registró el evento puede actualizarlo CREATE POLICY "Users can update own events" ON eventos FOR UPDATE USING (usuario_registro = (select auth.uid())::text);
Después de ejecutar las optimizaciones, verifica que el warning desaparezca en Supabase.
(select auth.uid())
se evalúa una sola vez por
consulta en lugar de por cada fila