Compare / vitess-sqlparser
vitess-sqlparser alternative: GoSQLX compared
The Vitess sqlparser (vitess.io/vitess/go/vt/sqlparser) is the MySQL parser used by Vitess, written in Go.
- Approach
- yacc-generated MySQL grammar inside the Vitess module
- Dialect
- MySQL
- CGo required
- No
Pick vitess-sqlparser when
- You target MySQL and want the parser that powers Vitess, including its MySQL-specific AST and rewriting tools.
- You already depend on the Vitess module for sharding or routing.
- Your queries are MySQL only and you want the parser the MySQL ecosystem in Go builds on.
Pick GoSQLX when
- You need more than MySQL: PostgreSQL, SQL Server, Oracle, SQLite, Snowflake and ClickHouse dialects as well.
- You want a standalone parser module instead of importing a subpackage of a large project.
- You want formatter, linter, security scanner and IDE tooling alongside the parser.
Parse speed, measured
End-to-end stage (SQL text to AST) · Apple M4 (darwin/arm64) · go1.27.2 · median of 10 runs · measured 2026-10-15 · Vitess sqlparser v0.24.5. Lower is faster.
| Query | GoSQLX | Vitess sqlparser |
|---|---|---|
| Simple SELECT | 925 ns | 870 ns |
| SELECT with WHERE, ORDER BY, LIMIT | 2,028 ns | 2,035 ns |
| Two-table JOIN | 3,215 ns | 2,694 ns |
| GROUP BY with HAVING | 2,230 ns | 1,778 ns |
| IN subquery | 1,887 ns | 2,176 ns |
| Common table expression | 2,748 ns | 2,517 ns |
| Window function | 1,899 ns | 2,071 ns |
| Multi-JOIN analytical query | 8,776 ns | 6,989 ns |
| INSERT VALUES | 1,443 ns | 1,249 ns |
| UPDATE with WHERE | 1,200 ns | 1,158 ns |
| DELETE with WHERE | 841 ns | 755 ns |
Read with care. The libraries implement different SQL dialects and build different ASTs (pg_query_go wraps the real PostgreSQL parser through CGo and converts its tree to Go structs; Vitess, TiDB and xwb1989 implement MySQL grammars). Each figure is the end-to-end cost of turning the same SQL text into that library's AST on the stated hardware, not identical work. Results vary by query, so check the rows that resemble your workload.
Full table, methodology and reproduce steps: competitor benchmarks. Source: benchmarks/compare/results/latest.json, commit c95aa7c.
What GoSQLX offers
Pure Go with no CGo, 8 dialects, 30 built-in lint rules, a formatter, a SQL injection scanner, an LSP server and an MCP server. Requires Go 1.26+.