在数据库中,“提高某行(Row)的权重”通常不是数据库引擎自带的原生概念,而是应用层或查询层为了影响排序、推荐、搜索相关性等而引入的逻辑。下面按常见场景给你讲讲怎么做:
最直接的方式是加一个权重字段(weight / score / priority),查询时排序。
ALTER TABLE article ADD weight INT DEFAULT 0;
SELECT *
FROM article
ORDER BY weight DESC, create_time DESC;
UPDATE article SET weight = weight + 10 WHERE id = 123;
如 MySQL + Elasticsearch / OpenSearch
SELECT *
FROM product
ORDER BY
CASE WHEN id = 123 THEN 0 ELSE 1 END,
score DESC;
{
"query": {
"bool": {
"should": [
{ "term": { "id": { "value": 123, "boost": 5 } } },
{ "match": { "title": "手机" } }
]
}
}
}
常见做法:
is_top、pinned)expire_at)ORDER BY is_top DESC, weight DESC, hot_score DESC;
⚠️ 注意:
如果你是想“让某行被更快读到”:
如 Row-Level Security(RLS):
| 目的 | 做法 |
|---|---|
| 排序靠前 | weight 字段 + ORDER BY |
| 搜索优先 | boost / CASE WHEN |
| 推荐优先 | 人工权重 + 算法分 |
| 性能优先 | 索引 + 缓存 |
如果你能说清楚是哪种数据库 + 什么业务场景(排序?搜索?推荐?),我可以直接给你可落地的 SQL 或方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。