diff --git a/data/sql/dbmigrate-30_to_31.sql b/data/sql/dbmigrate-30_to_31.sql
new file mode 100644
index 000000000..3b54713d3
--- /dev/null
+++ b/data/sql/dbmigrate-30_to_31.sql
@@ -0,0 +1,7 @@
+-- Script to migate from db version 30 to 31.
+
+-- Better indices to join playlist_item with other tables
+CREATE INDEX playlist_item_trackname ON playlist_item(trackname);
+CREATE INDEX playlist_item_artistname ON playlist_item(artistname);
+CREATE INDEX artist_name ON artist(name);
+CREATE INDEX track_name ON track(name);
diff --git a/resources.qrc b/resources.qrc
index d77f39226..ce0c0055a 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -161,5 +161,6 @@
data/js/cryptojs-core.js
data/js/cryptojs-sha256.js
data/sql/dbmigrate-29_to_30.sql
+ data/sql/dbmigrate-30_to_31.sql
diff --git a/src/libtomahawk/database/DatabaseImpl.cpp b/src/libtomahawk/database/DatabaseImpl.cpp
index d715781d0..5c5403df0 100644
--- a/src/libtomahawk/database/DatabaseImpl.cpp
+++ b/src/libtomahawk/database/DatabaseImpl.cpp
@@ -46,7 +46,7 @@
*/
#include "Schema.sql.h"
-#define CURRENT_SCHEMA_VERSION 30
+#define CURRENT_SCHEMA_VERSION 31
Tomahawk::DatabaseImpl::DatabaseImpl( const QString& dbname )
{
diff --git a/src/libtomahawk/database/Schema.sql b/src/libtomahawk/database/Schema.sql
index 49a948c54..543c56027 100644
--- a/src/libtomahawk/database/Schema.sql
+++ b/src/libtomahawk/database/Schema.sql
@@ -24,6 +24,7 @@ CREATE TABLE IF NOT EXISTS artist (
sortname TEXT NOT NULL
);
CREATE UNIQUE INDEX artist_sortname ON artist(sortname);
+CREATE INDEX artist_name ON artist(name);
CREATE TABLE IF NOT EXISTS track (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -32,6 +33,7 @@ CREATE TABLE IF NOT EXISTS track (
sortname TEXT NOT NULL
);
CREATE UNIQUE INDEX track_artist_sortname ON track(artist,sortname);
+CREATE INDEX track_name ON track(name);
CREATE TABLE IF NOT EXISTS album (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -90,6 +92,8 @@ CREATE TABLE IF NOT EXISTS playlist_item (
result_hint TEXT -- hint as to a result, to avoid using the resolver
);
CREATE INDEX playlist_item_playlist ON playlist_item(playlist);
+CREATE INDEX playlist_item_trackname ON playlist_item(trackname);
+CREATE INDEX playlist_item_artistname ON playlist_item(artistname);
CREATE TABLE IF NOT EXISTS playlist_revision (
guid TEXT PRIMARY KEY,
@@ -296,4 +300,4 @@ CREATE TABLE IF NOT EXISTS settings (
v TEXT NOT NULL DEFAULT ''
);
-INSERT INTO settings(k,v) VALUES('schema_version', '30');
+INSERT INTO settings(k,v) VALUES('schema_version', '31');
diff --git a/src/libtomahawk/database/Schema.sql.h b/src/libtomahawk/database/Schema.sql.h
index d519d2646..8e6a1f718 100644
--- a/src/libtomahawk/database/Schema.sql.h
+++ b/src/libtomahawk/database/Schema.sql.h
@@ -1,5 +1,5 @@
/*
- This file was automatically generated from ./Schema.sql on Mon Jul 29 21:04:33 CEST 2013.
+ This file was automatically generated from ./Schema.sql on Tue Jul 30 12:51:06 CEST 2013.
*/
static const char * tomahawk_schema_sql =
@@ -20,6 +20,7 @@ static const char * tomahawk_schema_sql =
" sortname TEXT NOT NULL"
");"
"CREATE UNIQUE INDEX artist_sortname ON artist(sortname);"
+"CREATE INDEX artist_name ON artist(name);"
"CREATE TABLE IF NOT EXISTS track ("
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
" artist INTEGER NOT NULL REFERENCES artist(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
@@ -27,6 +28,7 @@ static const char * tomahawk_schema_sql =
" sortname TEXT NOT NULL"
");"
"CREATE UNIQUE INDEX track_artist_sortname ON track(artist,sortname);"
+"CREATE INDEX track_name ON track(name);"
"CREATE TABLE IF NOT EXISTS album ("
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
" artist INTEGER NOT NULL REFERENCES artist(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
@@ -67,6 +69,8 @@ static const char * tomahawk_schema_sql =
" result_hint TEXT "
");"
"CREATE INDEX playlist_item_playlist ON playlist_item(playlist);"
+"CREATE INDEX playlist_item_trackname ON playlist_item(trackname);"
+"CREATE INDEX playlist_item_artistname ON playlist_item(artistname);"
"CREATE TABLE IF NOT EXISTS playlist_revision ("
" guid TEXT PRIMARY KEY,"
" playlist TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
@@ -193,7 +197,7 @@ static const char * tomahawk_schema_sql =
" k TEXT NOT NULL PRIMARY KEY,"
" v TEXT NOT NULL DEFAULT ''"
");"
-"INSERT INTO settings(k,v) VALUES('schema_version', '30');"
+"INSERT INTO settings(k,v) VALUES('schema_version', '31');"
;
const char * get_tomahawk_sql()