我正在开发时间表应用程序,并编写PHP代码以提取所有时间表直到日期.这是我为获取时间表而编写的查询-

选择a.accnt_name,u.username,DATE_FORMAT(t.in_time,’%H:%i’)inTime,DATE_FORMAT(t.out_time,’%H:%i’)outTime,DATE_FORMAT(t.work_time,’%H :%i’)工作时间,w.wrktyp_name,t.remarks,DATE_FORMAT(t.tmsht_date,’%d-%b-%Y’)tmshtDate,wl.loctn_name,s.serv_name,t.status_code,t.conv_kms convkms ,t.conv_amount从时间表t,帐户a,服务s,工作类型w,工作位置wl,用户WHERE a.accnt_code = t.accnt_code和w.wrktyp_code = t.wrktyp_code和wl.loctn_code = t.loctn_code和s.serv_code = t.serv_code和t.usr_code = u.按tmsht_date desc排序

where子句包含从各个表中获取各个代码的实际值的子句.

问题在于此查询需要花费大量时间来执行,并且应用程序在几分钟后崩溃.

我在phpmyadmin中运行了此查询,在这里它没有任何问题.

需要帮助来了解执行速度缓慢背后的原因.

解决方法:

使用EXPLAIN查看查询的执行计划.确保MySQL有合适的可用索引,并且正在使用这些索引.

查询文本似乎缺少此处的列名…

t.usr_code = u. ORDER

^^^

我们可以“猜测”应该是u.usr_code的代码,但这只是一个猜测.

应该返回多少行?结果集有多大?

您的客户端是否要尝试将所有行“存储”在内存中,并因为内存不足而崩溃?

如果是这样,我建议您避免这样做,并在需要时获取行.

或者,考虑在WHERE子句中添加一些其他谓词,以仅返回所需的行,而不返回表中的所有行.

现在是2015年.该放弃老式的逗号语法进行联接操作了,改为使用JOIN关键字,并将联接谓词从WHERE子句移到ON子句.并格式化它.数据库不在乎,但是它将使需要解密您的SQL语句的可怜的灵魂变得更容易.

SELECT a.accnt_name

, u.username

, DATE_FORMAT(t.in_time ,'%H:%i') AS inTime

, DATE_FORMAT(t.out_time ,'%H:%i') AS outTime

, DATE_FORMAT(t.work_time,'%H:%i') AS workTime

, w.wrktyp_name

, t.remarks

, DATE_FORMAT(t.tmsht_date, '%d-%b-%Y') AS tmshtDate

, wl.loctn_name

, s.serv_name

, t.status_code

, t.conv_kms AS convkms

, t.conv_amount AS convamount

FROM timesheets t

JOIN accounts a

ON a.accnt_code = t.accnt_code

JOIN services s

ON s.serv_code = t.serv_code

JOIN worktypes w

ON w.wrktyp_code = t.wrktyp_code

JOIN work_location wl

ON wl.loctn_code = t.loctn_code

JOIN users

ON u.usr_code = t.usr_code

ORDER BY t.tmsht_date DESC

在格式化日期列上的排序非常奇怪.您更有可能希望结果以“日期”顺序返回,而不是以年份前的月份和日期的字符串顺序返回. (您真的要在年份之前先按日值排序吗?)

跟进

如果这个完全相同的查询很快完成,并且整个结果集(大约720行)来自另一个客户端(同一数据库,同一用户),则该问题很可能不是此SQL语句.

我们不希望执行SQL语句导致PHP“崩溃”.

如果要存储整个结果集(例如,使用mysqli store_result),则需要具有足够的内存.但是选择列表中的13个表达式看起来都比较短(格式化的日期,名称和代码),并且我们不希望“备注”超过2 KB.

正如其他人所建议的那样,要调试此功能,请尝试在查询中添加LIMIT子句,例如LIMIT 1并观察其行为.

或者,使用虚拟查询进行测试;使用保证返回特定值和特定行数的查询.

SELECT 'morpheus' AS accnt_name

, 'trinity' AS username

, '01:23' AS inTime

, '04:56' AS outTime

, '00:45' AS workTime

, 'neo' AS wrktyp_name

, 'yada yada yada' AS remarks

, '27-May-2015' AS tmshtDate

, 'zion' AS loctn_name

, 'nebuchadnezzar' AS serv_name

, '' AS status_code

, '123' AS convkms

, '5678' AS convamount

我怀疑查询不是您观察到的行为的根本原因.我怀疑问题出在代码的其他地方.

https://www.icode9.com/content-2-529101.html

php mysql 查询时间_PHP-MySQL查询需要大量时间才能执行相关推荐

  1. php mysql 日期时间_php Mysql日期和时间函数集合

    收集的比较全的Mysql日期和mysql时间函数 DATE_FORMAT(date,format) 根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(J ...

  2. php mysql防卡_php mysql防止sql注入详解

    引发 SQL 注入攻击的主要原因,是因为以下两点原因: 1. php 配置文件 php.ini 中的 magic_quotes_gpc选项没有打开,被置为 off 2. 开发者没有对数据类型进行检查和 ...

  3. php mysql 读取数据_PHP MySQL 读取数据

    全屏 PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据:SELECT column_name(s) FROM table_name 我们可以使用 ...

  4. php mysql查询例子_php mysql一个查询优化的简单例子

    PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了. 因此,需要做好对mysql的查询优化,下面通过一个简单的例子 ...

  5. php mysql 查看错误_PHP mysql查询语法错误

    我是PHP / MySQL的新手,我似乎遇到了一个新手问题. 无论我改变什么,下面的代码都会让我犯错误,而且我觉得它必须在我正在弄乱的语法中的某个地方.这一切都在家里'localhost'工作,但现在 ...

  6. php mysql 超时时间_php mysql超时设置方法

    php mysql超时设置方法,源码,参数,底层,层面,都是 php mysql超时设置方法 易采站长站,站长之家为您整理了php mysql超时设置方法的相关内容. php mysql超时设置方法: ...

  7. php mysql 日期查找_PHP / MySQL存储和搜索日期

    像许多人一样,我对PHP和MySQL中的许多日期函数感到困惑. 我需要的是能够在MySQL中存储日期并能够以人类可读的格式在屏幕上查看日期,使用标准Web表单按月,年或两者的组合进行搜索,或者对其进行 ...

  8. php mysql上机题_PHP+mysql真题

    PHP+mysql真题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. [真题215]按要求写出SQL实现. ...

  9. php与mysql权威指南_PHP+MySQL全能权威指南

    <PHP+MySQL全能权威指南> 第1篇PHP动态网站和PHP程序语言基础入门篇 第1章准备基础知识.开发环境及配置运行环境 1.1正确认识PHP动态网站开发 1.2安装和配置PHP动态 ...

  10. php mysql用户登录_php mysql实现用户登录功能的代码示例

    接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...

最新文章

  1. VS2005相关----整理起始页面板
  2. JAVA开发常用类(一)
  3. POJ 2083 递归画分形图
  4. 【精华总结】全文4000字、20个案例详解Pandas当中的数据统计分析与排序
  5. MHA使用非22端口的SSH配置
  6. Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分 1 2. 性状 1 3. 适用场景 主治 适应症 1 3.1. 所有场景()。 1 3.2. 语法解析 构建ast 2 3.
  7. 层次分析法-yaahp软件使用
  8. 工具类官网Web原型制作分享-Adobe
  9. 自考计算机00051笔记,自考00051 管理系统中计算机应用自考资料笔记自考小抄.doc...
  10. js柯里化的认识(本文转载自https://www.zhangxinxu.com/wordpress/2013/02/js-currying),觉得很有用就记下了
  11. 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
  12. 算算我们80后的小孩今后读大学要花多少钱
  13. 3D点云 (Lidar)检测入门篇 - PointPillars PyTorch实现
  14. [经济管理]《余世维-有效沟通II》VOB AVI双版本下载及我的笔记
  15. 在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】
  16. create volume
  17. End-to-end people detection in crowded scenes
  18. 推荐JSON-handle谷歌插件
  19. stm32小车红外对管的循迹
  20. 电销企业外呼系统如何选最合适?

热门文章

  1. 一些有用的javascript实例分析(二)
  2. 语言差异引起的问题解决一例
  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第34篇]描述攻击离散对数问题的baby-step/Giant-step方法
  4. 微信在计算机基础中的辅助作用,基于微信课后辅导在计算机基础教学中应用.doc...
  5. 16位计算机cpu电路图,简单16位CPU设计.doc
  6. Jenkins主从节点配置
  7. 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
  8. html5新增的js,HTML5新增属性data-*和js/jquery之间的交互及注意事项
  9. asterisk 互联
  10. android 主线程调用,Android 主线程和线程之间相互发送消息