diff --git a/src/Media.cpp b/src/Media.cpp
index e82721d64b114a8dcfa629baa6b02230cfd44ee1..ae5c7a28d0357dff5975ccf6468f62c7304f5094 100644
--- a/src/Media.cpp
+++ b/src/Media.cpp
@@ -1456,6 +1456,9 @@ void Media::createIndexes( sqlite::Connection* connection )
     sqlite::Tools::executeRequest( connection,
                                    index( Indexes::GenreId,
                                           Settings::DbModelVersion ) );
+    sqlite::Tools::executeRequest( connection,
+                                   index( Indexes::ArtistId,
+                                          Settings::DbModelVersion ) );
 }
 
 std::string Media::schema( const std::string& tableName, uint32_t dbModel )
@@ -1958,6 +1961,10 @@ std::string Media::index( Indexes index, uint32_t dbModel )
             assert( dbModel >= 34 );
             return "CREATE INDEX " + indexName( index, dbModel ) +
                     " ON " + Table::Name + "(genre_id)";
+        case Indexes::ArtistId:
+            assert( dbModel >= 34 );
+            return "CREATE INDEX " + indexName( index, dbModel ) +
+                    " ON " + Table::Name + "(artist_id)";
         default:
             assert( !"Invalid index provided" );
     }
@@ -2013,6 +2020,9 @@ std::string Media::indexName( Indexes index, uint32_t dbModel )
         case Indexes::GenreId:
             assert( dbModel >= 34 );
             return "media_genre_id_idx";
+        case Indexes::ArtistId:
+            assert( dbModel >= 34 );
+            return "media_artist_id_idx";
         default:
             assert( !"Invalid index provided" );
     }
@@ -2061,7 +2071,8 @@ bool Media::checkDbModel( MediaLibraryPtr ml )
             checkIndex( ml->getConn(), Indexes::PlayCount ) &&
             checkIndex( ml->getConn(), Indexes::Title ) &&
             checkIndex( ml->getConn(), Indexes::FileName ) &&
-            checkIndex( ml->getConn(), Indexes::GenreId );
+            checkIndex( ml->getConn(), Indexes::GenreId ) &&
+            checkIndex( ml->getConn(), Indexes::ArtistId );
 }
 
 bool Media::addLabel( LabelPtr label )
diff --git a/src/Media.h b/src/Media.h
index da0b964f71ff110947a9e01380e681fdb688b0fc..3b8ce9e9d4b0b49434ed972431e615fb2f33cd18 100644
--- a/src/Media.h
+++ b/src/Media.h
@@ -97,6 +97,7 @@ class Media : public IMedia,
             Title,
             FileName,
             GenreId,
+            ArtistId,
         };
 
         // Those should be private, however the standard states that the expression
diff --git a/src/database/migrations/migration33-34.sql b/src/database/migrations/migration33-34.sql
index 8409c7af64075594e2825dce5c20ff193cffff9a..8e64cc6bf0d31bcb92eecebfd2a3476e07ee15ff 100644
--- a/src/database/migrations/migration33-34.sql
+++ b/src/database/migrations/migration33-34.sql
@@ -54,6 +54,7 @@ Media::index( Media::Indexes::PlayCount, 34 ),
 Media::index( Media::Indexes::Title, 34 ),
 Media::index( Media::Indexes::FileName, 34 ),
 Media::index( Media::Indexes::GenreId, 34 ),
+Media::index( Media::Indexes::ArtistId, 34 ),
 Album::trigger( Album::Triggers::IsPresent, 34 ),
 Artist::trigger( Artist::Triggers::HasTrackPresent, 34 ),
 Thumbnail::trigger( Thumbnail::Triggers::AutoDeleteMedia, 34 ),
diff --git a/test/unittest/DbModelTests.cpp b/test/unittest/DbModelTests.cpp
index f9ff6b09b0700016146e49825a1933d99e8e3efc..ae16e857d2ca0d782deb558d5482a60cc79c5ff4 100644
--- a/test/unittest/DbModelTests.cpp
+++ b/test/unittest/DbModelTests.cpp
@@ -112,6 +112,7 @@ namespace
         "index_media_presence",
         "label_rel_media_id_idx",
         "media_album_track_idx",
+        "media_artist_id_idx",
         "media_duration_idx",
         "media_filename_idx",
         "media_folder_id_idx",