首页 > 解决方案 > Laravel 使用表中的索引键进行查询的最佳实践方法

问题描述

我有以下数据库表:

id     - PK (Auto Increment)
hash   - a unique index the value here is filled using the function "uniqid()"  
title  - string..

我想使用哈希值而不是 id 从表中查询。这种做法是否会加载服务器,因为我知道这是从数据库表中获取某些行的最佳方法,尤其是包含大量行的行是使用主键搜索的:

$row = Book::find(1);

或者我可以使用以下 eloquent builder 而不必担心对数据库服务器造成不必要的负载,因为他的哈希被设置为唯一键:

$row = Book::where('hash',$hashFromAPiRequest)->first();

有一个名为laravel Scout的包,我不确定我是否真的需要使用它。

标签: phplaravel

解决方案


你不需要为此使用 Laravel Scout。一个简单的 where 条件就足够了。只要哈希列被索引,您的查询就不会加载服务器。

但是,由于您提到了不必要的负载,您仍然可以在此处使用select()进行一点优化。请仅使用您真正需要的那些列,否则您将发送/消耗额外的数据字节。

$row = Book::select('id', 'title')->where('hash',$hashFromAPiRequest)->first();

如果您想了解有关优化的更多信息,还可以查看Laravel 使用 mysql 索引。


推荐阅读