php mysql 查询时间_PHP-MySQL查询需要大量时间才能执行
我正在开发时间表应用程序,并编写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查询需要大量时间才能执行相关推荐
- php mysql 日期时间_php Mysql日期和时间函数集合
收集的比较全的Mysql日期和mysql时间函数 DATE_FORMAT(date,format) 根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(J ...
- php mysql防卡_php mysql防止sql注入详解
引发 SQL 注入攻击的主要原因,是因为以下两点原因: 1. php 配置文件 php.ini 中的 magic_quotes_gpc选项没有打开,被置为 off 2. 开发者没有对数据类型进行检查和 ...
- php mysql 读取数据_PHP MySQL 读取数据
全屏 PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据:SELECT column_name(s) FROM table_name 我们可以使用 ...
- php mysql查询例子_php mysql一个查询优化的简单例子
PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了. 因此,需要做好对mysql的查询优化,下面通过一个简单的例子 ...
- php mysql 查看错误_PHP mysql查询语法错误
我是PHP / MySQL的新手,我似乎遇到了一个新手问题. 无论我改变什么,下面的代码都会让我犯错误,而且我觉得它必须在我正在弄乱的语法中的某个地方.这一切都在家里'localhost'工作,但现在 ...
- php mysql 超时时间_php mysql超时设置方法
php mysql超时设置方法,源码,参数,底层,层面,都是 php mysql超时设置方法 易采站长站,站长之家为您整理了php mysql超时设置方法的相关内容. php mysql超时设置方法: ...
- php mysql 日期查找_PHP / MySQL存储和搜索日期
像许多人一样,我对PHP和MySQL中的许多日期函数感到困惑. 我需要的是能够在MySQL中存储日期并能够以人类可读的格式在屏幕上查看日期,使用标准Web表单按月,年或两者的组合进行搜索,或者对其进行 ...
- php mysql上机题_PHP+mysql真题
PHP+mysql真题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. [真题215]按要求写出SQL实现. ...
- php与mysql权威指南_PHP+MySQL全能权威指南
<PHP+MySQL全能权威指南> 第1篇PHP动态网站和PHP程序语言基础入门篇 第1章准备基础知识.开发环境及配置运行环境 1.1正确认识PHP动态网站开发 1.2安装和配置PHP动态 ...
- php mysql用户登录_php mysql实现用户登录功能的代码示例
接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...
最新文章
- VS2005相关----整理起始页面板
- JAVA开发常用类(一)
- POJ 2083 递归画分形图
- 【精华总结】全文4000字、20个案例详解Pandas当中的数据统计分析与排序
- MHA使用非22端口的SSH配置
- Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分	1 2. 性状	1 3. 适用场景 主治 适应症	1 3.1. 所有场景()。	1 3.2. 语法解析 构建ast	2 3.
- 层次分析法-yaahp软件使用
- 工具类官网Web原型制作分享-Adobe
- 自考计算机00051笔记,自考00051 管理系统中计算机应用自考资料笔记自考小抄.doc...
- js柯里化的认识(本文转载自https://www.zhangxinxu.com/wordpress/2013/02/js-currying),觉得很有用就记下了
- 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
- 算算我们80后的小孩今后读大学要花多少钱
- 3D点云 (Lidar)检测入门篇 - PointPillars PyTorch实现
- [经济管理]《余世维-有效沟通II》VOB AVI双版本下载及我的笔记
- 在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】
- create volume
- End-to-end people detection in crowded scenes
- 推荐JSON-handle谷歌插件
- stm32小车红外对管的循迹
- 电销企业外呼系统如何选最合适?
热门文章
- 一些有用的javascript实例分析(二)
- 语言差异引起的问题解决一例
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第34篇]描述攻击离散对数问题的baby-step/Giant-step方法
- 微信在计算机基础中的辅助作用,基于微信课后辅导在计算机基础教学中应用.doc...
- 16位计算机cpu电路图,简单16位CPU设计.doc
- Jenkins主从节点配置
- 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
- html5新增的js,HTML5新增属性data-*和js/jquery之间的交互及注意事项
- asterisk 互联
- android 主线程调用,Android 主线程和线程之间相互发送消息