Optimize tag cloud query

Still does a sort that ought to be indexable, but fixing that would be considerably more work.
This commit is contained in:
seger672
2021-01-06 18:20:30 +00:00
parent af14df4238
commit 1ed7e6a5f6
+7 -6
View File
@@ -288,14 +288,15 @@ async function getCategories(db) {
async function getTagCloud(db, limit, offset=0) {
const tags = db.prepare(`
SELECT count(t.id) as c, t.name
FROM article__tag a_t
LEFT JOIN article a ON a_t.article_id = a.id
LEFT JOIN tag t ON a_t.tag_id = t.id
GROUP BY t.id
ORDER BY c DESC
SELECT name, count FROM (
SELECT tag_id, COUNT(1) AS count
FROM article__tag
GROUP BY tag_id
ORDER BY count DESC
LIMIT @limit
OFFSET @offset
)
INNER JOIN tag on tag_id = tag.id
`).all({ limit, offset })
return tags
}