Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel快速整数查找?_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php Laravel快速整数查找?

Php Laravel快速整数查找?,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我们有一张有数百万行的桌子。最近,我们引入了一个整数作为辅助键,它只是一个唯一的整数列new_identifier=1100327,尚未定义为辅助主键 这个查找查询在tinker中大约需要6秒钟$this->id\u lookup也是一个整数。在地平线上最多50秒 DB::table('my_big_table')->where('new_identifier',$this->id_lookup)->get() 我们如何实现与find($this->id\u lookup)相同的性能哪一个几乎是

我们有一张有数百万行的桌子。最近,我们引入了一个整数作为辅助键,它只是一个唯一的整数列
new_identifier=1100327
,尚未定义为辅助主键

这个查找查询在tinker中大约需要6秒钟
$this->id\u lookup
也是一个整数。在地平线上最多50秒

DB::table('my_big_table')->where('new_identifier',$this->id_lookup)->get()

我们如何实现与find($this->id\u lookup)相同的性能哪一个几乎是即时的

我们可以引入第二个主键,比如
$table->key(['id','new_identifier')

这将如何影响其他查找,如
MyBigTable::find($id)在其他地方执行


更新-将列从int更改为index将查找时间从50秒缩短到您可以创建索引,在迁移中执行以下操作

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

索引可以帮助您,但主键索引是特殊的,它们是聚集的。这意味着它包含以下键上的所有数据。虽然次索引是非聚集索引,但仅包含索引列和主键列。它仍将提高性能,但在这一领域,您需要大量研究不同索引对查询的影响,而不是黑白的。

可能是分区。这就是我们的想法。第二个表具有相同数量的记录,并且通过32个字符的哈希搜索几乎是即时的。这可能是另一个问题,但是
unique
索引是否比
index
性能更好?当我读到关于二级索引的声明时,您肯定需要重新阅读->“除聚集索引外的所有索引都称为二级索引。在InnoDB中,辅助索引中的每条记录都包含该行的主键列,以及为辅助索引指定的列。InnoDB使用此主键值搜索聚集索引中的行。如果主键较长,则次索引将占用更多空间,因此主键较短是有利的。“是用
bigInt
表示的
index
吗?@Raymond Nijland从我的学校教科书中取了一个头:)但是谢谢你更新了措辞。
index
查询是否也用“->where('new_id,$newId);”完成了?