What is the algorithm for query search in the database?

前端 未结 3 652
天命终不由人
天命终不由人 2021-02-06 01:08

Good day everyone, I\'m currently doing research on search algorithm optimization.

As of now, I\'m researching on the Database.

In a database w/ SQL Support.

3条回答
  •  情深已故
    2021-02-06 01:45

    Well, it depends on how the data is stored and what are you trying to do.

    • As already indicated, a common structure for maintaining entries is a B+ tree. The tree is well optimized for disk since the actual data is stored only in leaves - and the keys are stored in the internal nodes. It usually allows a very small number of disk accesses since the top k levels of the tree can be stored in RAM, and only the few bottom levels will be stored on disk and require a disk read for each.
    • Other alternative is a hash table. You maintain in memory (RAM) an array of "pointers" - these pointers indicate a disk address, which contains a bucket that includes all entries with the corresponding hash value. Using this method, you only need O(1) disk accesses (which is usually the bottleneck when dealing with data bases), so it should be relatively fast.
      However, a hash table does not allow efficient range queries (which can be efficiently done in a B+ tree).

    The disadvantage of all of the above is that it requires a single key - i.e. if the hash table or B+ tree is built according to the field "id" of the relation, and then you search according to "key" - it becomes useless.
    If you want to guarantee fast search for all fields of the relation - you are going to need several structures, each according to a different key - which is not very memory efficient.

    Now, there are many optimizations to be considered according to the specific usage. If for example, number of searches is expected to be very small (say smaller loglogN of total ops), maintaining a B+ tree is overall less efficient then just storing the elements as a list and on the rare occasion of a search - just do a linear search.

提交回复
热议问题