mirror of
https://github.com/wallabag/wallabag.git
synced 2025-08-01 17:38:38 +00:00
Use two indexes instead of one for hashed urls
When using `OR` in a where clause, a composite index can't be used. We should use a `UNION` to take advantages of it. Instead, create 2 indexes on each hashed urls and make 2 queries to find an url. It'll be faster than the previous solution.
This commit is contained in:
parent
f3bfb875e9
commit
70df4c3359
4 changed files with 20 additions and 25 deletions
|
@ -30,27 +30,8 @@ class Version20190601125843 extends WallabagMigration
|
|||
]);
|
||||
}
|
||||
|
||||
$entryTable->dropIndex('hashed_url_user_id');
|
||||
$entryTable->addIndex(
|
||||
[
|
||||
'user_id',
|
||||
'hashed_url',
|
||||
'hashed_given_url',
|
||||
],
|
||||
'hashed_urls_user_id',
|
||||
[],
|
||||
[
|
||||
// specify length for index which is required by MySQL on text field
|
||||
'lengths' => [
|
||||
// user_id
|
||||
null,
|
||||
// hashed_url
|
||||
40,
|
||||
// hashed_given_url
|
||||
40,
|
||||
],
|
||||
]
|
||||
);
|
||||
// 40 = length of sha1 field hashed_given_url
|
||||
$entryTable->addIndex(['user_id', 'hashed_given_url'], 'hashed_given_url_user_id', [], ['lengths' => [null, 40]]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -68,7 +49,6 @@ class Version20190601125843 extends WallabagMigration
|
|||
$entryTable->dropColumn('hashed_given_url');
|
||||
}
|
||||
|
||||
$entryTable->dropIndex('hashed_urls_user_id');
|
||||
$entryTable->addIndex(['user_id', 'hashed_url'], 'hashed_url_user_id', [], ['lengths' => [null, 40]]);
|
||||
$entryTable->dropIndex('hashed_given_url_user_id');
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue