ホームページ > 記事 > PHPフレームワーク > Laravel 学習レコードはクエリに対して指定されたインデックスを強制します
データベースは、SQL クエリ用に想定されていたインデックスを使用しないため、クエリが非常に遅くなります。
select * from user where age = 26 Force Index(age); / / Forceindex
select * from user where age = 26 useindex(age); // このインデックスに基づいて検索を優先します
/** * 检测某个表中是否存在某个索引 * @param $table * @param $index * @return bool * @author zhaohao * @date 2019-08-26 17:42 */ if(!function_exists('hasIndex')) { function hasIndex($table, $name) { $conn = IlluminateSupportFacadesSchema::getConnection(); $dbSchemaManager = $conn->getDoctrineSchemaManager(); $doctrineTable = $dbSchemaManager->listTableDetails($table); return $doctrineTable->hasIndex($name); } }
->from(DB::raw('`erp_agents` FORCE INDEX (`test`)'))例:
$agents = Agent::where($whereType) ->when(hasIndex('Agent', 'test'),function ($q){ $q->from(DB::raw('`erp_agents` FORCE INDEX (`test`)')); }) ->when(request('position',false),function ($q){ $q->whereIn('position_id',request('position')); }) ->whereIn('agents.status', $validStatus) ->where('worked_at', '<=', $end) ->where('is_suppose', 0) ->addDomination('m.statistics-human-view') ->leftJoin('positions', 'positions.id', '=', 'agents.position_id') ->get(['worked_days', 'worked_at']);[関連する推奨事項:
最新の 5 つの Laravel ビデオ チュートリアル ]
以上がLaravel 学習レコードはクエリに対して指定されたインデックスを強制しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。