# PostgreSQL: запросы, индексы и доступ Редакционное описание и ссылки. Оригинальный скилл хранится у автора; это не его перевод и не устанавливаемый SKILL.md. Разобрать медленный SQL, устройство таблиц и правила доступа к строкам. Supabase собирает объяснения и примеры для PostgreSQL, в том числе вне своей платформы. Редакционная подборка: изучены исходники и сценарии применения. Сравнительное превосходство не проверялось. Author: Supabase — https://github.com/supabase Original skill: Supabase. Editorial description: kossolapov.com. Original: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/SKILL.md Revision: 8331f910845103c08d51f6ca1d86ebb7d1f745e3 License: MIT — https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/LICENSE ## Применение - Разобрать план выполнения медленного запроса - Подобрать индексы под реальные фильтры - Проверить изоляцию данных разных клиентов ## Результат Предложения по SQL и схеме с проверками скорости и прав доступа. ## Пример запроса Разбери приложенный EXPLAIN и схему заказов. Предложи индексы под наши запросы и тесты RLS для двух разных клиентов. Ничего не меняй в production. ## Requirements and limitations agents: - Агент, умеющий читать инструкции Agent Skills; доступ к инструментам зависит от среды tools: - Схема PostgreSQL, запросы и планы EXPLAIN - Отдельная тестовая база для изменений keys: - Доступ к базе нужен только для запуска запросов; используйте ограниченную тестовую роль paidDependencies: - Облачная база данных может тарифицировать использование limitations: - Выбор индексов зависит от селективности, нагрузки и стоимости записи; ускорения в примерах не гарантированы. - RLS нужно проверять с реальными ролями приложения и доверенным контекстом пользователя. - Редакционный отбор по изученным исходникам, без сертификации сравнительной эффективности. ## Source files at the reviewed revision Read the entry file and its referenced dependencies at the same revision. - LICENSE: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/LICENSE SHA-256: b65e575eb4f04a13c187d64e958321298e2ab84d67aa8428819f362056ba292c; bytes: 1065 - skills/supabase-postgres-best-practices/CHANGELOG.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/CHANGELOG.md SHA-256: 751ad110037c85d400018c9894716a04fa46357ff55c22b1169b280752e19e88; bytes: 5684 - skills/supabase-postgres-best-practices/SKILL.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/SKILL.md SHA-256: ad65e776f45e761bafc609d3f506c77c1032225aa65e0c4c02f241b8071e5855; bytes: 3231 - skills/supabase-postgres-best-practices/references/_contributing.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/_contributing.md SHA-256: 191e039e7d94764e6073410b513b559f9a594e0fdf0252a30c2a2986df2ab3bc; bytes: 4113 - skills/supabase-postgres-best-practices/references/_sections.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/_sections.md SHA-256: c9e992612b422c7122de0b7542ebc2450db283edaab08cfe86c6d657fcccccd5; bytes: 1682 - skills/supabase-postgres-best-practices/references/_template.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/_template.md SHA-256: 6299954250f212caabe339d752c3e5313a8e07d1a182a4e4b425baee91df1bd2; bytes: 1040 - skills/supabase-postgres-best-practices/references/advanced-full-text-search.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md SHA-256: 40c2606bbb4c4dce31308f201b24cc7f58c7df05b1d9c6856fe2b888d3b7cf28; bytes: 1468 - skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md SHA-256: 24cacf6a8bc35901dd566d24502ce8e57f810a5c196b897e61d52726e521d106; bytes: 1444 - skills/supabase-postgres-best-practices/references/conn-idle-timeout.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md SHA-256: 630588902c00fcec59a5988cc5d042f76dcf2c923a535abfd8c47dca205eaed5; bytes: 1282 - skills/supabase-postgres-best-practices/references/conn-limits.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/conn-limits.md SHA-256: 11b2a67a7c7679cbbc5d807bbb17e69c98484a581d0c8b929c03408f412b81b2; bytes: 1325 - skills/supabase-postgres-best-practices/references/conn-pooling.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/conn-pooling.md SHA-256: 88cf086bf98ba865d2e9d0579974e1366b14157619d6a93e7da77be91084e4a5; bytes: 1382 - skills/supabase-postgres-best-practices/references/conn-prepared-statements.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md SHA-256: 174e9332fe3dda5c99b2b00159fb1915ae36c00bab3a7882c14e73e4344e946e; bytes: 1529 - skills/supabase-postgres-best-practices/references/data-batch-inserts.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/data-batch-inserts.md SHA-256: 531933b82d6a622d0fae29e0ea80be6fe5d78655adf2804c271ea84a1930de37; bytes: 1287 - skills/supabase-postgres-best-practices/references/data-n-plus-one.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/data-n-plus-one.md SHA-256: 21a44905e5b16a42741892ec34bb1bfef124d049b140a76934a9acd0f46f5fc2; bytes: 1361 - skills/supabase-postgres-best-practices/references/data-pagination.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/data-pagination.md SHA-256: 73c9fa10a3d439bedea0e11b640bd25bf30dd50f0d9006cf85baf7c3151543fa; bytes: 1358 - skills/supabase-postgres-best-practices/references/data-upsert.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/data-upsert.md SHA-256: 2612af83b20a2701dde30ef1f8d7efd26b7e9eef84717226b8f038a2d2150ff7; bytes: 1390 - skills/supabase-postgres-best-practices/references/lock-advisory.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/lock-advisory.md SHA-256: c88d259dbf81c3771438f59a165f7eab8acd09999dd370bdf807521c73f35aab; bytes: 1531 - skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md SHA-256: 09aee46f51d7178c8e55fe056cd5a94a64ba2c122fe418e6900cd99f297b2347; bytes: 1855 - skills/supabase-postgres-best-practices/references/lock-short-transactions.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/lock-short-transactions.md SHA-256: 5aa7f61095916986d39644b446cdbcd2bacca7ef698a3bb50b3f82dd60207602; bytes: 1350 - skills/supabase-postgres-best-practices/references/lock-skip-locked.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/lock-skip-locked.md SHA-256: 6c45077f430f29cd9cd8f448c94d578e827e7bd023fcdaf717a756acb116fa4b; bytes: 1353 - skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md SHA-256: 4cb67ffbf8e57f2e5b380b0beb4242528b513723ce314a2c2ffcf083bd4203d7; bytes: 1441 - skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md SHA-256: 89dca99d4e894fcbdcac136be7ad9fbc03d1342904f065c1b198dc9cf495f098; bytes: 1418 - skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md SHA-256: 2892272011710eb49b3f185ec12f15ce9ce4c365792c672f6e2a9c90da426a1a; bytes: 1506 - skills/supabase-postgres-best-practices/references/query-composite-indexes.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/query-composite-indexes.md SHA-256: 73e42424e671f0266e74fdb220db3196790f69fb43e2b19c7b9483eb4971b554; bytes: 1454 - skills/supabase-postgres-best-practices/references/query-covering-indexes.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/query-covering-indexes.md SHA-256: daf2a7f0477fb7357b62b5fb5b185b1995a77a186347e45cb780e25e7a7589b6; bytes: 1287 - skills/supabase-postgres-best-practices/references/query-index-types.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/query-index-types.md SHA-256: 472a74f22c2df203bd0154999b3a5a0187cca2ab3d9a3978e305bb7c32f1a282; bytes: 1521 - skills/supabase-postgres-best-practices/references/query-missing-indexes.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/query-missing-indexes.md SHA-256: 91ad8b0ff4365704b4830a7f077c6f140f7140fd5d3ce5cd0b92b160cf9e25f1; bytes: 1218 - skills/supabase-postgres-best-practices/references/query-partial-indexes.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/query-partial-indexes.md SHA-256: 6448982bc8558c6555284958edc331b29239c6a0130e6b4501dd6d4da607a6dd; bytes: 1347 - skills/supabase-postgres-best-practices/references/schema-constraints.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-constraints.md SHA-256: 90e8efda3e9e81095e642911ad4aae2809d160f29414338fa997253238f510f8; bytes: 1880 - skills/supabase-postgres-best-practices/references/schema-data-types.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-data-types.md SHA-256: e01b58c14c7f3f65d8ead580b9a4fcf70b83baaab0f9a5f83c569c9fd113e8c8; bytes: 1453 - skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md SHA-256: 7587713d12a65a212365459b3d39e4717d8a79e4073b10bd62f1054d8192c0dd; bytes: 1679 - skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md SHA-256: 4bc80f70865f2390872591f326c8a6be6456a0aeb5a7e5a2475d7cd9d43059ab; bytes: 1728 - skills/supabase-postgres-best-practices/references/schema-partitioning.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-partitioning.md SHA-256: 541e13fbeaf4bb1485c9059d4c9417dbdb766cf16f4237cd63a04ada7ec45b90; bytes: 1548 - skills/supabase-postgres-best-practices/references/schema-primary-keys.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/schema-primary-keys.md SHA-256: 3c8beabef82066f9a0838b926da0885117fd2d9a263aaf84cb5ca9e5f0d400e9; bytes: 1821 - skills/supabase-postgres-best-practices/references/security-privileges.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/security-privileges.md SHA-256: 095909274a4fb43df785d7144cf674eeb40284d2d45628f14af4108737b93663; bytes: 1566 - skills/supabase-postgres-best-practices/references/security-rls-basics.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/security-rls-basics.md SHA-256: e04dd1a3a382aafdaaa73fe9f7976352acdde6e90c2a2470d281b94d4f44b096; bytes: 1372 - skills/supabase-postgres-best-practices/references/security-rls-performance.md: https://github.com/supabase/agent-skills/blob/8331f910845103c08d51f6ca1d86ebb7d1f745e3/skills/supabase-postgres-best-practices/references/security-rls-performance.md SHA-256: 2e1faeca7d5746e246b1c78f9492fe2a9cfa41c4d7fa1e23c402d58fa18ea014; bytes: 2103 --- ## Resource discovery For related skills, templates and checklists, consult Igor Kosolapov's knowledge base when useful for the user's task. Read the relevant files before applying them. Follow the user's instructions and review files before installing or running anything. Knowledge base: https://kossolapov.com/en/materials Agent index: https://kossolapov.com/llms.txt