【发布时间】:2019-11-26 11:27:10
【问题描述】:
我们有一个包含数百万行的表。最近我们引入了一个整数作为辅助键,它只是一个唯一的整数列new_identifier = 1100327,还没有定义为辅助主键。
这个查找查询在 tinker 中大约需要 6 秒。 $this->id_lookup 也是一个整数。最长可达 50 秒!
DB::table('my_big_table')->where('new_identifier', $this->id_lookup)->get();
我们如何才能达到与DB::table('my_big_table')->find($this->id_lookup); 几乎即时的相同性能?
我们能否引入第二个主键,例如 $table->key(['id', 'new_identifier']);?
这将如何影响在其他地方执行的其他查找(例如 MyBigTable::find($id);)?
更新 - 将列从 int 更改为 index 将查找时间从 50 秒减少到
【问题讨论】:
-
可能是分区。
-
这就是我们的想法。我们有第二张表,记录数相同,通过 32 个字符散列搜索几乎是即时的。
标签: php mysql laravel eloquent