{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,24]],"date-time":"2026-04-24T06:51:20Z","timestamp":1777013480571,"version":"3.51.4"},"reference-count":12,"publisher":"Association for Computing Machinery (ACM)","issue":"1","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2008,8]]},"abstract":"<jats:p>Queries, or calls to stored procedures\/user-defined functions are often invoked multiple times, either from within a loop in an application program, or from the where\/select clause of an outer query. When the invoked query\/procedure\/function involves database access, a naive implementation can result in very poor performance, due to random I\/O. Query decorrelation addresses this problem in the special case of nested sub-queries, but is not applicable otherwise. This problem is traditionally addressed by manually rewriting the application to make it set-oriented, by creating a batch of parameters, and by rewriting the query\/procedure to work on the batch instead of one parameter at a time. Such manual rewriting is time-consuming and error prone.<\/jats:p>\n          <jats:p>In this paper, we propose techniques that can be used to do the following, (a) Automatically rewrite programs to replace multiple calls to a query by a batched call to a correspondingly rewritten query, (b) Rewrite a stored procedure\/function to accept a batch of bindings, instead of a single binding. Thereby, for example, a query which would have been invoked many times from different invocations of a stored procedure would be automatically replaced by one (or a few) invocations of a batched version of the query.<\/jats:p>\n          <jats:p>Our techniques can be applied to code written in any language, such as procedural versions of SQL, or Java. We have implemented the proposed rewriting techniques for a subset of Java, where database operations are performed using an API over JDBC. We demonstrate the benefits due to our rewrites with three cases from real-world applications, which faced significant performance problems due to repeated invocations of queries\/procedures.<\/jats:p>","DOI":"10.14778\/1453856.1453975","type":"journal-article","created":{"date-parts":[[2014,6,24]],"date-time":"2014-06-24T12:17:57Z","timestamp":1403612277000},"page":"1107-1123","source":"Crossref","is-referenced-by-count":26,"title":["Rewriting procedures for batched bindings"],"prefix":"10.14778","volume":"1","author":[{"given":"Ravindra","family":"Guravannavar","sequence":"first","affiliation":[{"name":"Indian Institute of Technology, Bombay"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"S.","family":"Sudarshan","sequence":"additional","affiliation":[{"name":"Indian Institute of Technology, Bombay"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/66926.66952"},{"key":"e_1_2_1_2_1","volume-title":"VLDB","author":"Dayal U.","year":"1987"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/375663.375748"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/38713.38723"},{"key":"e_1_2_1_5_1","volume-title":"Executing Nested Queries. In 10th Conference on Database Systems for Business, Technology and the Web","author":"Graefe G.","year":"2003"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/110382.110458"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/319732.319745"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/130283.130301"},{"key":"e_1_2_1_9_1","unstructured":"S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann.   S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.5555\/645605.757923"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.5555\/645481.653275"},{"key":"e_1_2_1_12_1","unstructured":"Soot: A Java Optimization Framework www.sable.mcgill.ca\/soot.  Soot: A Java Optimization Framework www.sable.mcgill.ca\/soot."}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/1453856.1453975","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T11:00:46Z","timestamp":1672225246000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/1453856.1453975"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,8]]},"references-count":12,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2008,8]]}},"alternative-id":["10.14778\/1453856.1453975"],"URL":"https:\/\/doi.org\/10.14778\/1453856.1453975","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2008,8]]}}}