{"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/the-case-for-learned-index-structures","title":"The Case for Learned Index Structures","arxiv_id":"1712.01208","date":"2017-12-04","proceeding":null,"authors":["Tim Kraska","Alex Beutel","Ed H. Chi","Jeffrey Dean","Neoklis Polyzotis"],"abstract":"Indexes are models: a B-Tree-Index can be seen as a model to map a key to the\nposition of a record within a sorted array, a Hash-Index as a model to map a\nkey to a position of a record within an unsorted array, and a BitMap-Index as a\nmodel to indicate if a data record exists or not. In this exploratory research\npaper, we start from this premise and posit that all existing index structures\ncan be replaced with other types of models, including deep-learning models,\nwhich we term learned indexes. The key idea is that a model can learn the sort\norder or structure of lookup keys and use this signal to effectively predict\nthe position or existence of records. We theoretically analyze under which\nconditions learned indexes outperform traditional index structures and describe\nthe main challenges in designing learned index structures. Our initial results\nshow, that by using neural nets we are able to outperform cache-optimized\nB-Trees by up to 70% in speed while saving an order-of-magnitude in memory over\nseveral real-world data sets. More importantly though, we believe that the idea\nof replacing core components of a data management system through learned models\nhas far reaching implications for future systems designs and that this work\njust provides a glimpse of what might be possible.","url_abs":"http://arxiv.org/abs/1712.01208v3","url_pdf":"http://arxiv.org/pdf/1712.01208v3.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":"the-case-for-learned-index-structures","repo_url":"https://github.com/ArnabRaxit/learned_indexes","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/illinoisdata/rmi","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/khalefa-phd/learned-indexes","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/learnedsystems/RMI","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/owena11/papers","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/saltsystemslab/learnedjoindiskexp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/stoianmihail/XY-sorting","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"the-case-for-learned-index-structures","repo_url":"https://github.com/yangjufo/Learned-Indexes","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"unanswered"}}],"tasks":[{"task_slug":"management","task_name":"Management"},{"task_slug":null,"task_name":"Position"}],"methods":[{"method_slug":"speed","method_name":"SPEED"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1712.01208","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1712.01208"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/owena11/papers","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/illinoisdata/rmi","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/khalefa-phd/learned-indexes","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/saltsystemslab/learnedjoindiskexp","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/learnedsystems/RMI","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yangjufo/Learned-Indexes","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/stoianmihail/XY-sorting","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ArnabRaxit/learned_indexes","reach":null}],"summary":{"ran_honours":1,"ran_fixture":1,"ran_draft_wrong":2},"by_repo_kind":{"listed":{"samples":4,"ran":4,"repositories":2}},"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":2,"samples":[{"code_sha256_prefix":"c190ee864bc2076e","entry":"dfn","repo":"khalefa-phd/learned-indexes","repo_kind":"listed","path":"Learned_BTree.py","file_url":"https://github.com/khalefa-phd/learned-indexes/blob/HEAD/Learned_BTree.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c190ee864bc2076e"}},{"code_sha256_prefix":"bca80466d0b61685","entry":"learn_index","repo":"ArnabRaxit/learned_indexes","repo_kind":"listed","path":"index_learner.py","file_url":"https://github.com/ArnabRaxit/learned_indexes/blob/HEAD/index_learner.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bca80466d0b61685"}},{"code_sha256_prefix":"7d57d1a24e1824fa","entry":"memoize","repo":"khalefa-phd/learned-indexes","repo_kind":"listed","path":"Trained_NN.py","file_url":"https://github.com/khalefa-phd/learned-indexes/blob/HEAD/Trained_NN.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7d57d1a24e1824fa"}},{"code_sha256_prefix":"3890f94e89e4e6cb","entry":"predict_indexes","repo":"ArnabRaxit/learned_indexes","repo_kind":"listed","path":"index_learner.py","file_url":"https://github.com/ArnabRaxit/learned_indexes/blob/HEAD/index_learner.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3890f94e89e4e6cb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}