{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/neurocard-one-cardinality-estimator-for-all","title":"NeuroCard: One Cardinality Estimator for All Tables","arxiv_id":"2006.08109","date":"2020-06-15","proceeding":null,"authors":["Zongheng Yang","Amog Kamsetty","Sifei Luan","Eric Liang","Yan Duan","Xi Chen","Ion Stoica"],"abstract":"Query optimizers rely on accurate cardinality estimates to produce good execution plans. Despite decades of research, existing cardinality estimators are inaccurate for complex queries, due to making lossy modeling assumptions and not capturing inter-table correlations. In this work, we show that it is possible to learn the correlations across all tables in a database without any independence assumptions. We present NeuroCard, a join cardinality estimator that builds a single neural density estimator over an entire database. Leveraging join sampling and modern deep autoregressive models, NeuroCard makes no inter-table or inter-column independence assumptions in its probabilistic modeling. NeuroCard achieves orders of magnitude higher accuracy than the best prior methods (a new state-of-the-art result of 8.5$\\times$ maximum error on JOB-light), scales to dozens of tables, while being compact in space (several MBs) and efficient to construct or update (seconds to minutes).","url_abs":"https://arxiv.org/abs/2006.08109v2","url_pdf":"https://arxiv.org/pdf/2006.08109v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"neurocard-one-cardinality-estimator-for-all","repo_url":"https://github.com/neurocard/neurocard","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"all","task_name":"All"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2006.08109","atlas_url":"https://app.syntology.ai/?focus=2006.08109","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.08109"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/neurocard/neurocard","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":19},"by_repo_kind":{"official":{"samples":19,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"e184f2c17059d8c9","entry":"CachedReadCsv","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/datasets.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e184f2c17059d8c9"}},{"code_sha256_prefix":"fbeeb14d1ed6f185","entry":"ConcatTables","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/common.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fbeeb14d1ed6f185"}},{"code_sha256_prefix":"c2a2b36b24276540","entry":"Discretize","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/common.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c2a2b36b24276540"}},{"code_sha256_prefix":"abb495347c7887a0","entry":"ExecuteSql","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/make_job_queries.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/make_job_queries.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"abb495347c7887a0"}},{"code_sha256_prefix":"1c7fef4de7980c21","entry":"ScaleInput","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/distributions.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1c7fef4de7980c21"}},{"code_sha256_prefix":"fbda26488645dbb8","entry":"discretized_mixture_of_logistics_logprobs","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/distributions.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fbda26488645dbb8"}},{"code_sha256_prefix":"80528654d3431119","entry":"dmol_query","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/distributions.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"80528654d3431119"}},{"code_sha256_prefix":"1281b27adc4bf3a2","entry":"get_bottom_up_table_ordering","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/join_utils.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/join_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1281b27adc4bf3a2"}},{"code_sha256_prefix":"30183552631e5dd6","entry":"get_fanout_columns","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/factorized_sampler.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/factorized_sampler.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"30183552631e5dd6"}},{"code_sha256_prefix":"51717647e20d5a6b","entry":"get_fanout_columns_impl","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/factorized_sampler.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/factorized_sampler.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"51717647e20d5a6b"}},{"code_sha256_prefix":"28a933386693e950","entry":"get_jct_count_columns","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/factorized_sampler.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/factorized_sampler.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"28a933386693e950"}},{"code_sha256_prefix":"826a572f7a1eb82b","entry":"get_join_spec","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/join_utils.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/join_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"826a572f7a1eb82b"}},{"code_sha256_prefix":"75f57a10f841fe57","entry":"get_table_info","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/fair_sampler.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/fair_sampler.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"75f57a10f841fe57"}},{"code_sha256_prefix":"128a7bc81ffe8772","entry":"make_join_graph","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/fair_sampler.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/fair_sampler.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"128a7bc81ffe8772"}},{"code_sha256_prefix":"77fd3e98c92026d7","entry":"match_join_clause_or_fail","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/join_utils.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/join_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"77fd3e98c92026d7"}},{"code_sha256_prefix":"8bdf97c21650c966","entry":"operator_isnull","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/estimators.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/estimators.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8bdf97c21650c966"}},{"code_sha256_prefix":"9c08c58ad03d1324","entry":"operator_like","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/estimators.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/estimators.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9c08c58ad03d1324"}},{"code_sha256_prefix":"9523f843e8a3e38c","entry":"profile","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/estimators.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/estimators.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9523f843e8a3e38c"}},{"code_sha256_prefix":"b1266ed534d4e507","entry":"time_this","repo":"neurocard/neurocard","repo_kind":"official","path":"neurocard/common.py","file_url":"https://github.com/neurocard/neurocard/blob/HEAD/neurocard/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b1266ed534d4e507"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}