I compared four ways to pick tables for a text-to-SQL prompt
Every text-to-SQL prompt carries a schema. Send all of it and you pay for every table on every call. Send a few and you risk leaving out the one the question needs. So how you pick the tables matters. I tested four ways on the same questions, with no model calls at all: Full schema : no picking. BM

Every text-to-SQL prompt carries a schema. Send all of it and you pay for every table on every call. Send a few and you risk leaving out the one the question needs. So how you pick the tables matters.
I tested four ways on the same questions, with no model calls at all:
Each method got the same number of tables: 12 on Spider 2.0's big BigQuery and Snowflake warehouses, 6 on BIRD.
On the same question, schemagate had every needed table where embeddings missed 17 times on the warehouses and was beaten once. On BIRD, 151 to 9.
What it costs: 8–11% more tokens than plain retrieval, mostly the tables needed to join the ones it picked. That join step is a big part of why it finds more.
What I didn't test: selectors that ask an LLM to pick tables. They cost a model call per question; this comparison is the free tier.
The script and the full results are in this pull request, if you want to run it on your own questions: https://github.com/ashishsinha1602/schemagate/pull/189