【发布时间】:2017-12-16 14:34:16
【问题描述】:
我在我的表“帖子”上使用众所周知的 reddit 'hot' 算法。现在这个热列是一个十进制数,像这样:'XXXXX,XXXXXXXX'
我希望此列成为索引,因为当我按“热”排序时,我希望查询尽可能快。但是,我对索引有点陌生。索引是否需要唯一?
如果它必须是独一无二的,这会有效吗?
$table->unique('id', 'hot');
如果它不必是唯一的,这是否是正确的方法?
$table->index('hot');
最后一个问题:以下查询是否会利用索引?
Post::orderBy('hot', 'desc')->get()
如果没有,我应该如何修改?
非常感谢!
【问题讨论】:
-
不是 100% 确定,但几乎 100% 确定所有 3 个问题的答案都是肯定的。 (虽然我认为
unique只需要 1 个参数)。执行EXPLAIN SELECT * FROM posts ORDER BY hot DESC可以验证您的索引是否正在使用(但应该是)。 -
等等。所以目前,我正在做 $table->index('hot'),因为该列不是唯一的。使用说明查询,不幸的是它没有使用任何键。
标签: php mysql laravel indexing database-indexes