1
0
Fork 0
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:
Jeremy Benoist 2019-06-05 10:51:06 +02:00
parent f3bfb875e9
commit 70df4c3359
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
4 changed files with 20 additions and 25 deletions

View file

@ -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');
}
}