Régis Hanol
b704e338ef
DEV: extract anniversary badge query ( #19716 )
...
So it can easily be overwritten in a plugin for example.
### Added more tests to provide better coverage
We previously only had `u.silenced_till IS NULL` but I made it consistent with pretty much every other places where we check for "active" users.
These two new lines do change the query a tiny bit though.
**Before**
- You could not get the badge if you were currently silenced (no matter what period is being checked)
- You could get the badge if you were suspended 😬
**After**
- You can't get the badge if you were silenced during the past year
- You can't get the badge if you were suspended during the past year
### Improved the performance of the query by using `NOT EXISTS` instead of `LEFT JOIN / COUNT() = 0`
There is no difference in behaviour between
```sql
LEFT JOIN user_badges AS ub ON ub.user_id = u.id AND ...
[...]
HAVING COUNT(ub.*) = 0
```
and
```sql
NOT EXISTS (SELECT 1 FROM user_badges AS ub WHERE ub.user_id = u.id AND ...)
```
The only difference is performance-wise. The `NOT EXISTS` is 10-30% faster on very large databases (aka. posts and users in X millions). I checked on 3 of the largest datasets I could find.
2023-01-16 11:55:00 +01:00
..
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2022-04-28 11:51:03 +02:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-12 10:04:46 +10:00
2023-01-12 13:54:15 +10:00
2023-01-09 12:10:19 +00:00
2022-01-14 17:51:13 -03:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2021-08-20 11:29:06 +02:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2022-12-14 18:56:46 +01:00
2023-01-12 12:07:49 +01:00
2023-01-09 12:10:19 +00:00
2023-01-11 14:22:53 +01:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-16 09:08:44 +11:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-16 06:04:53 +08:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2020-04-30 16:48:53 +10:00
2023-01-16 11:55:00 +01:00
2021-05-21 11:43:47 +10:00
2023-01-05 08:43:58 +10:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-11 14:22:53 +01:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-10 22:38:52 +02:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2021-06-14 20:34:44 +05:30
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-16 09:08:44 +11:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2022-04-05 19:29:58 +02:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2022-01-21 17:54:18 +02:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2021-11-11 12:21:25 -06:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-13 01:21:04 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-12 09:41:39 +10:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 19:19:51 +02:00
2019-12-03 10:05:53 +01:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-11 14:22:53 +01:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2020-07-21 15:55:03 +08:00
2023-01-09 12:10:19 +00:00
2023-01-12 09:41:39 +10:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00
2023-01-11 08:39:15 +03:00
2023-01-09 12:10:19 +00:00
2023-01-09 12:10:19 +00:00