Add better indexes and delete redundant ones.
This commit is contained in:
parent
7910e12bc8
commit
b2115f88be
2 changed files with 26 additions and 6 deletions
|
@ -154,10 +154,31 @@ def upgrade_6_to_7(ycdldb):
|
|||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_author_download')
|
||||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_download')
|
||||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_download_published')
|
||||
ycdldb.sql.execute('CREATE INDEX index_video_author_state on videos(author_id, state)')
|
||||
ycdldb.sql.execute('CREATE INDEX index_video_state on videos(state)')
|
||||
# /videos/state?orderby=published
|
||||
ycdldb.sql.execute('CREATE INDEX index_video_state_published on videos(state, published)')
|
||||
|
||||
def upgrade_7_to_8(ycdldb):
|
||||
'''
|
||||
In this version, indexes were optimized by adding indexes that satisfy the
|
||||
major use cases, and deleting indexes that are redundant in the presence of
|
||||
another multi-column index.
|
||||
'''
|
||||
# /channel?orderby=published
|
||||
ycdldb.sql.execute('''
|
||||
CREATE INDEX IF NOT EXISTS index_video_author_published on videos(author_id, published);
|
||||
''')
|
||||
# /channel/state?orderby=published
|
||||
ycdldb.sql.execute('''
|
||||
CREATE INDEX IF NOT EXISTS index_video_author_state_published
|
||||
on videos(author_id, state, published);
|
||||
''')
|
||||
# Redundant due to (author, published)
|
||||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_author')
|
||||
# Redundant due to (author, state, published)
|
||||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_author_state')
|
||||
# Redundant due to (state, published)
|
||||
ycdldb.sql.execute('DROP INDEX IF EXISTS index_video_state')
|
||||
|
||||
def upgrade_all(data_directory):
|
||||
'''
|
||||
Given the directory containing a ycdl database, apply all of the
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from voussoirkit import sqlhelpers
|
||||
|
||||
DATABASE_VERSION = 7
|
||||
DATABASE_VERSION = 8
|
||||
DB_VERSION_PRAGMA = f'''
|
||||
PRAGMA user_version = {DATABASE_VERSION};
|
||||
'''
|
||||
|
@ -36,11 +36,10 @@ CREATE TABLE IF NOT EXISTS videos(
|
|||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS index_channel_id on channels(id);
|
||||
CREATE INDEX IF NOT EXISTS index_video_author on videos(author_id);
|
||||
CREATE INDEX IF NOT EXISTS index_video_author_state on videos(author_id, state);
|
||||
CREATE INDEX IF NOT EXISTS index_video_author_published on videos(author_id, published);
|
||||
CREATE INDEX IF NOT EXISTS index_video_author_state_published on videos(author_id, state, published);
|
||||
CREATE INDEX IF NOT EXISTS index_video_id on videos(id);
|
||||
CREATE INDEX IF NOT EXISTS index_video_published on videos(published);
|
||||
CREATE INDEX IF NOT EXISTS index_video_state on videos(state);
|
||||
CREATE INDEX IF NOT EXISTS index_video_state_published on videos(state, published);
|
||||
----------------------------------------------------------------------------------------------------
|
||||
COMMIT;
|
||||
|
|
Loading…
Reference in a new issue