MySQL Best Practices
Comprehensive performance optimization guide for MySQL, adapted from PostgreSQL best practices. Contains rules across 8 categories, prioritized by impact to guide automated query optimization and schema design.
When to Apply
Reference these guidelines when:
- •Writing SQL queries or designing schemas
- •Implementing indexes or query optimization
- •Reviewing database performance issues
- •Configuring connection pooling or scaling
- •Optimizing for MySQL-specific features
- •Working with MySQL security features
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Query Performance | CRITICAL | query- |
| 2 | Connection Management | CRITICAL | conn- |
| 3 | Security | CRITICAL | security- |
| 4 | Schema Design | HIGH | schema- |
| 5 | Concurrency & Locking | MEDIUM-HIGH | lock- |
| 6 | Data Access Patterns | MEDIUM | data- |
| 7 | Monitoring & Diagnostics | LOW-MEDIUM | monitor- |
| 8 | Advanced Features | LOW | advanced- |
How to Use
Read individual rule files for detailed explanations and SQL examples:
code
references/query-missing-indexes.md references/schema-partial-indexes.md references/_sections.md
Each rule file contains:
- •Brief explanation of why it matters
- •Incorrect SQL example with explanation
- •Correct SQL example with explanation
- •Optional EXPLAIN output or metrics
- •Additional context and references
- •MySQL-specific notes
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md
MySQL vs PostgreSQL Key Differences
This skill adapts PostgreSQL best practices to MySQL. Key differences:
- •JSON: MySQL uses
JSONtype (notJSONB), withJSON_EXTRACT(),JSON_CONTAINS()functions - •Arrays: MySQL doesn't have native arrays; use JSON arrays or normalized tables
- •Full-Text Search: MySQL uses
FULLTEXTindexes withMATCH() AGAINST()syntax - •UUIDs: Use
CHAR(36)orBINARY(16)instead of native UUID type - •String Matching: Use
LIKE(case-sensitive) orLIKE BINARYinstead ofILIKE - •Type Casting: Use
CAST()function instead of::operator - •Window Functions: MySQL 8.0+ supports window functions (similar to PostgreSQL)