Skip to main content

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.

QueryGoSQLXVitess sqlparser
Simple SELECT925 ns870 ns
SELECT with WHERE, ORDER BY, LIMIT2,028 ns2,035 ns
Two-table JOIN3,215 ns2,694 ns
GROUP BY with HAVING2,230 ns1,778 ns
IN subquery1,887 ns2,176 ns
Common table expression2,748 ns2,517 ns
Window function1,899 ns2,071 ns
Multi-JOIN analytical query8,776 ns6,989 ns
INSERT VALUES1,443 ns1,249 ns
UPDATE with WHERE1,200 ns1,158 ns
DELETE with WHERE841 ns755 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+.

Full feature matrix