【问题标题】:Efficient way to search single record from 6000k+ record DB in laravel在 laravel 中从 6000k+ 记录数据库中搜索单个记录的有效方法
【发布时间】:2020-08-29 13:36:52
【问题描述】:

我想知道如何从 6000k+ 记录数据库中搜索单个记录。我已经为它写了一个查询,但我面临15s 加载时间对于高效的系统来说太长了,所以请帮助我以一种有效的方式进行搜索,以减少搜索的响应时间。

$users = DB::select('select * from tablefour where Provider_Business_Mailing_Address_Fax_Number = ?', array($request['id'])); 
return $users;

【问题讨论】:

  • 您是否为Provider_Business_Mailing_Address_Fax_Number 列创建了索引?
  • 欢迎来到 SO。这是我的看法,在数据库中查询优化有几种方法,在你的情况下,数据库比 PHP 或 Laravel 更负责

标签: mysql sql laravel


【解决方案1】:

1st只选择您需要的那些列。

$users = \DB::table('tablefour')->select(['columnone','columntwo'])->whereIn('Provider_Business_Mailing_Address_Fax_Number',array($request['id']))->get();
return $users;

第二次

在您选择的列上设置indexing

查看@Rana Nadeem 答案以了解如何进行索引。

使用迁移

Schema::table('tablefour', function (Blueprint $table) {
    $table->index('user_id');
});

【讨论】:

    【解决方案2】:

    创建列索引,然后搜索将在该列上快速运行。这对我有帮助。

    对于 Laravel:- 在架构中执行此操作

        final class AddIndexesTableFour extends Migration
    {
        public function up(): void
        {
            Schema::table('tablefour', function (Blueprint $table) {
                $table->index('Provider_Business_Mailing_Address_Telephone_Number');
            });
        }
    
        public function down(): void
        {
            Schema::table('tablefour', function (Blueprint $table) {
                $table->dropIndex(['Provider_Business_Mailing_Address_Telephone_Number']);
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多