Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 50615
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T16:37:16+00:00 2026-05-10T16:37:16+00:00

I’ve been working with databases for the last few years and I’d like to

  • 0

I’ve been working with databases for the last few years and I’d like to think that I’ve gotten fairly competent with using them. However I was reading recently about Joel’s Law of Leaky Abstractions and I realised that even though I can write a query to get pretty much anything I want out of a database, I have no idea how the database actually interprets the query. Does anyone know of any good articles or books that explain how databases work internally?

Some specific things I’m interested in are:

  • What does a database actually do to find out what matches a select statement?
  • How does a database interpret a join differently to a query with several ‘where key1 = key2’ statements?
  • How does the database store all its memory?
  • How are indexes stored?
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T16:37:16+00:00Added an answer on May 10, 2026 at 4:37 pm

    What does a database actually do to find out what matches a select statement?

    To be blunt, it’s a matter of brute force. Simply, it reads through each candidate record in the database and matches the expression to the fields. So, if you have ‘select * from table where name = ‘fred”, it literally runs through each record, grabs the ‘name’ field, and compares it to ‘fred’.

    Now, if the ‘table.name’ field is indexed, then the database will (likely, but not necessarily) use the index first to locate the candidate records to apply the actual filter to.

    This reduces the number of candidate records to apply the expression to, otherwise it will just do what we call a ‘table scan’, i.e. read every row.

    But fundamentally, however it locates the candidate records is separate from how it applies the actual filter expression, and, obviously, there are some clever optimizations that can be done.

    How does a database interpret a join differently to a query with several ‘where key1 = key2’ statements?

    Well, a join is used to make a new ‘pseudo table’, upon which the filter is applied. So, you have the filter criteria and the join criteria. The join criteria is used to build this ‘pseudo table’ and then the filter is applied against that. Now, when interpreting the join, it’s again the same issue as the filter — brute force comparisons and index reads to build the subset for the ‘pseudo table’.

    How does the database store all its memory?

    One of the keys to good database is how it manages its I/O buffers. But it basically matches RAM blocks to disk blocks. With the modern virtual memory managers, a simpler database can almost rely on the VM as its memory buffer manager. The high end DB’S do all this themselves.

    How are indexes stored?

    B+Trees typically, you should look it up. It’s a straight forward technique that has been around for years. It’s benefit is shared with most any balanced tree: consistent access to the nodes, plus all the leaf nodes are linked so you can easily traverse from node to node in key order. So, with an index, the rows can be considered ‘sorted’ for specific fields in the database, and the database can leverage that information to it benefit for optimizations. This is distinct from, say, using a hash table for an index, which only lets you get to a specific record quickly. In a B-Tree you can quickly get not just to a specific record, but to a point within a sorted list.

    The actual mechanics of storing and indexing rows in the database are really pretty straight forward and well understood. The game is managing buffers, and converting SQL in to efficient query paths to leverage these basic storage idioms.

    Then, there’s the whole multi-users, locking, logging, and transactions complexity on top of the storage idiom.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 255k
  • Answers 255k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer You can either bind to a dummy function: void dummy()… May 13, 2026 at 10:16 am
  • Editorial Team
    Editorial Team added an answer You'll get several nasty symbol name collisions when you #include… May 13, 2026 at 10:16 am
  • Editorial Team
    Editorial Team added an answer Creating a symlink in cygwin would work, but you would… May 13, 2026 at 10:16 am

Related Questions

I've got a string that has curly quotes in it. I'd like to replace
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I have a French site that I want to parse, but am running into
I have text I am displaying in SIlverlight that is coming from a CMS

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.