What are the disadvantages to Indexes in database tables?

32,152

Solution 1

One index on a table is not a big deal. You automatically have an index on columns (or combinations of columns) that are primary keys or declared as unique.

There is some overhead to an index. The index itself occupies space on disk and memory (when used). So, if space or memory are issues then too many indexes could be a problem. When data is inserted/updated/deleted, then the index needs to be maintained as well as the original data. This slows down updates and locks the tables (or parts of the tables), which can affect query processing.

A small number of indexes on each table are reasonable. These should be designed with the typical query load in mind. If you index every column in every table, then data modifications would slow down. If your data is static, then this is not an issue. However, eating up all the memory with indexes could be an issue.

Solution 2

Advantage of having an index

  • Read speed: Faster SELECT when that column is in WHERE clause

Disadvantages of having an index

  • Space: Additional disk/memory space needed
  • Write speed: Slower INSERT / UPDATE / DELETE

Solution 3

As a minimum I would normally recommend having at least 1 index per table, this would be automatically created on your tables primary key, for example an IDENTITY column. Then foreign keys would normally benefit from an index, this will need to be created manually. Other columns that are frequently included in WHERE clauses should be indexed, especially if they contain lots of unique values. The benefit of indexing columns, such as gender (low-cardinality) when this only has 2 values is debatable. Most of the tables in my databases have between 1 and 4 indexes, depending on the data in the table and how this data is retrieved.

Share:
32,152

Related videos on Youtube

Stpete111
Author by

Stpete111

Updated on March 31, 2021

Comments

  • Stpete111
    Stpete111 about 3 years

    Is there any reason I shouldn't create an index for every one of my database tables, as a means of increasing performance? It would seem there must be some reason(s) else all tables would automatically have one by default.

    I use MS SQL Server 2016.

    • Pரதீப்
      Pரதீப் over 7 years
      Simple answer is when there is more INSERT/UPDATE/DELETE than SELECT in your table then creating Index on that table may not be effective
    • Radu Gheorghiu
      Radu Gheorghiu over 7 years
      Other minuses would be increased storage requirements (for the indexes themselves), possibly index maintenance plans. Do you plan on creating indexes in 2017?
    • ps_prakash02
      ps_prakash02 over 7 years
  • Dan Guzman
    Dan Guzman over 7 years
    Too many indexes also add compilation overhead and can increase the likelihood of deadlocks due to different data access paths.
  • Gordon Linoff
    Gordon Linoff over 7 years
    @TT. . . . You are correct and I learned something: en.oxforddictionaries.com/explore/number-of-people-is-or-are‌​.
  • TT.
    TT. over 7 years
    @GordonLinoff Yeah, I was little too eager to correct that, but I had a tingling doubt. Looked it up and it was correct as you wrote it initially :). HNY!