Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Mysql 我只想要我桌子上的一排。做一个连接还是只做两个选择呼叫更好_Mysql_Sql - Fatal编程技术网

Mysql 我只想要我桌子上的一排。做一个连接还是只做两个选择呼叫更好

Mysql 我只想要我桌子上的一排。做一个连接还是只做两个选择呼叫更好,mysql,sql,Mysql,Sql,我有两个表,我需要一行包含表1的所有列,只有表2的一列。我使用order by rand()limit 0,1获取行 我想知道选择表1的所有列,然后再调用另一个从表2中获取额外列是否更有效。由于我只需要一条记录,我担心当我只需要一行时,它会在后台做额外的工作来连接表 我仍在本地开发,我的计算机速度很快,所以我无法区分两者之间的区别,但当它上线时,付费服务器上每秒会有许多呼叫,因此资源是宝贵的没有效率,按兰特限制0,1;它不能很好地扩展。这是大门外的一个设计缺陷。如果您坚持这样做,那么您肯定不希望

我有两个表,我需要一行包含表1的所有列,只有表2的一列。我使用order by rand()limit 0,1获取行

我想知道选择表1的所有列,然后再调用另一个从表2中获取额外列是否更有效。由于我只需要一条记录,我担心当我只需要一行时,它会在后台做额外的工作来连接表


我仍在本地开发,我的计算机速度很快,所以我无法区分两者之间的区别,但当它上线时,付费服务器上每秒会有许多呼叫,因此资源是宝贵的

没有效率,按兰特限制0,1;它不能很好地扩展。这是大门外的一个设计缺陷。如果您坚持这样做,那么您肯定不希望执行联接,因为这将迭代表中的每一行。至少,您应该选取一小行样本,从中随机抽取一行:

$row=SELECT table_rows*rand() FROM INFORMATION_SCHEMA.TABLES WHERE foo and bar
SELECT * FROM foobar LIMIT $row, 1

关系数据库非常擅长连接,尤其是在表之间设置了外键关系的情况下。在这里,做一个简单的内部连接是您最不担心的事情。这个查询是sql查询吗?表_行*rand()?我不明白这个查询,你能不能只用sql写它,或者再解释一下它的伪代码。获取表中的行数,然后选择一个随机的行,然后查询特定的行。尝试使用1mln行的数据集查看性能差异。