Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 在第一行之后停止MySQL查询_Php_Mysql_Optimization - Fatal编程技术网

Php 在第一行之后停止MySQL查询

Php 在第一行之后停止MySQL查询,php,mysql,optimization,Php,Mysql,Optimization,我有一段MySQL代码,可以搜索相当长的MySQL数据库。当多次执行时,这需要很长时间,尽管我需要从代码中检查是否存在至少一个条目。在找到一行后,是否可以指示mysql代码停止搜索?谢谢。请在查询结束时尝试限制1。在查询结束时尝试限制1。如果您仅尝试搜索一项内容,则必须有一些主键与之关联。因此,在查询中,您可以在where子句中包含somethere,它只会带来一个结果。像这样的 select * from students where id='123' 由于主键是唯一的键,因此不会

我有一段MySQL代码,可以搜索相当长的MySQL数据库。当多次执行时,这需要很长时间,尽管我需要从代码中检查是否存在至少一个条目。在找到一行后,是否可以指示mysql代码停止搜索?谢谢。

请在查询结束时尝试
限制1

在查询结束时尝试
限制1

如果您仅尝试搜索一项内容,则必须有一些主键与之关联。因此,在查询中,您可以在where子句中包含somethere,它只会带来一个结果。像这样的

    select * from students where id='123' 

由于主键是唯一的键,因此不会有任何重复,只会执行一次搜索。

如果您试图只搜索一件事,则必须有一些主键与之关联。因此,在查询中,您可以在where子句中包含somethere,它只会带来一个结果。像这样的

    select * from students where id='123' 
SELECT * FROM tablename LIMIT 1 OFFSET 0
因为主键是唯一的键,所以不会有任何重复,只会进行一次搜索

SELECT * FROM tablename LIMIT 1 OFFSET 0
  • “限制”将设置您想要返回的最大项目数
  • 偏移量让您声明开始查询的起点
结合使用“限制”和“偏移量”,可以非常精确地控制在多个会话中获取大量数据库行

或使用更简单的双参数限制功能(与限制、偏移相同):

  • “限制”将设置您想要返回的最大项目数
  • 偏移量让您声明开始查询的起点
结合使用“限制”和“偏移量”,可以非常精确地控制在多个会话中获取大量数据库行

或使用更简单的双参数限制功能(与限制、偏移相同):


LIMIT 1
添加到查询中。
LIMIT 1
有什么问题?不会使搜索变短。将
LIMIT 1
添加到查询中。
LIMIT 1
有什么问题?不会使搜索变短。这无论如何都不会使搜索变短,实际上有时会使搜索变长。限制1只是让代码返回1行,而不是只搜索一行。上面说“一旦MySQL向客户端发送了所需数量的行,它就会中止查询”不,它仍然需要找到行-它只是不需要找到所有行。我只是再次检查,没有限制1,我的查询返回33000行,限制为1,显然是1,但不幸的是,两者都需要相同的时间(大约1.2秒),您不应该基于phpMyAdmin工具测试MySQL性能。在这两种情况下,花费相同时间的原因很可能只有95%的时间是由phpMyAdmin的PHP代码消耗的,而最后5%的时间是由MySQL消耗的,因此没有区别。尝试使用MySQL Workbench或命令行工具来真正测试查询的执行时间:)这并不会缩短搜索时间,实际上有时会延长搜索时间。限制1只是让代码返回1行,而不是只搜索一行。上面说“一旦MySQL向客户端发送了所需数量的行,它就会中止查询”不,它仍然需要找到行-它只是不需要找到所有行。我只是再次检查,没有限制1,我的查询返回33000行,限制为1,显然是1,但不幸的是,两者都需要相同的时间(大约1.2秒),您不应该基于phpMyAdmin工具测试MySQL性能。在这两种情况下,花费相同时间的原因很可能只有95%的时间是由phpMyAdmin的PHP代码消耗的,而最后5%的时间是由MySQL消耗的,因此没有区别。尝试MySQL Workbench或命令行工具来真正测试查询的执行时间:)