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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-----软件开发模型(详细讲解)

大数据学习免费学习资料(免费教程) 软件工程中,常用的开了模型有四种:瀑布模型、原型模型、增量模型和螺旋模型。 ⒈瀑布模型包括计划,需求分析、设计、编码、测试、运行维护六个阶段,阶段自上而下&#x…

python response[200_python – django上的代码200 httpresponse

我正在进行服务基本登录,我需要在Django视图中回答代码200和JSON,但我不知道这是否是使用HttpResponse库的正确形式?def Login(email,password):UserCUser()if User.is_valid(email,password) :userUser.find(email)datos[Id] str(user[Id])datos[Name] user[Name…

C#中struct和class的区别详解

本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的。 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上。class是引用类型,创建一个class类型实例被分配在托管堆上。但struct和cla…

python面向对象编程的语言_怎么使用python面向对象编程

怎么使用python面向对象编程发布时间:2020-08-25 13:42:19来源:亿速云阅读:89作者:Leah本篇文章给大家分享的是有关怎么使用python面向对象编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅…

软件测试计划时要记住什么

测试计划是软件测试生命周期的早期阶段之一。良好的计划是平稳执行阶段的关键,而糟糕的计划可能导致不必要的时间消耗。测试用例编写,资源分配等是作为测试计划的一部分执行的一些活动。 在规划过程中应注意并注意一些关键点,以避免将冗余问题…

ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些不对之处,欢迎各位大神拍砖指教&am…

基于TFS实践敏捷-可视化管理

TFS是基于微软平台一套不错的系统,支持源码管理运行调试持续集成自动化测试Bug管理代码评审任务项管理文档管理沟通管理。 基于TFS 2015实践看板管理,让团队的数据可视化,让大家更多的关心产品、关注团队的努力,增强沟通、及时反映…

linux查看java版本_linux 查看java版本

inux查看java jdk安装路径和设置环境变量windows:set java_home:查看JDK安装路径java -version:查看JDK版本linux:whereis javawhich java (java执行路径)**echo $JAVA_HOME****echo $PATH**二:下面是配置linux的环境变量:(记得so…

[转载]基于TFS实践敏捷-修复Bug和执行代码评审

本主题阐释了这些功能,以继续这一关注虚拟敏捷团队成员的一天的教程。 Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务。但是,他的同事发现了一个阻碍他们工作的 Bug,他想立即修复此 Bug。 他暂停了手中的工作并修复此 Bug。 他请求…

lzw压缩 java_java实现的LZW 压缩算法源码 | 学步园

导读:/** LZW.java** Created on 01 Dec 2005** Implementation of LZW compression/decompression algorithm*/import java.io.* ;/**** author Moshe Fresko* courseAlgorithmic Programming 1* exercise3*/public class LZW implements Compression{boolean stop…

单元测试入门

https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?viewvs-2019 使用 Visual Studio 定义和运行单元测试,使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试,确保代码正常运行。…

java中乐观锁_Java中乐观锁与悲观锁的实现

锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生…

.net开源框架简介和通用技术选型建议

.net体系 .net core .net 类库 asp.net mvc asp.net webapi asp.net core EF 跨平台和运行时解决方案(解决方案) Katana:微软基于OWIN规范实现的非IIS寄宿ASP.NET和MVC等。 MONO.NET:跨平台的.NET运行环境,让.NE…

JAVA 2048源码_java实现2048游戏源代码

本文实例为大家分享了java实现2048游戏源代码,供大家参考,具体内容如下一.主要功能:1、游戏初始化:新建游戏44的16宫格画布,随机格子上生成2或者4两个数字2、格子的移动:先判断能否移动,移动后判…

.Net开源的跨平台爬虫框架 DotnetSpider

项目详细介绍 DotnetSpider是开源的.NET跨平台数据采集爬虫框架。需要 Scheduler,Downloader ,Processor,Pipeline 四部分。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39…

开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源

DncZeus 前言 关于 DncZeus DncZeus Dnc Zeus "Dnc"--.Net Core 的缩写; "Zeus"--中文译为宙斯,是古希腊神话中的众神之王,奥林匹斯十二主神之首,统治宇宙万物的至高无上的主神(在古希腊神…

浏览器使用java_java如何调用本地的浏览器

1.调用本地的浏览器 import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;public class UseBrowser {public static void main(String[] args) {URL url null;try {url new URL("http://www.baidu.com");} catch (MalformedURL…

java input函数怎么用_Java函数习惯用法详解

在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段&#xf…

十大开源的.NET用户界面框架 让GUI设计不再犯难

选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户。好的UI更能吸引用户,有时甚至成为决定一款应用成败的关键。下面小编整理出十大应用最广泛.NET开源用户界面框架&am…

mysql一对一级联_MySQL 表的一对一、一对多、多对多问题

将实体与实体的关系,反应到最终数据库表的设计上,将关系分为三种:一对一,一对多(多对一)和多对多,所有的关系都是表与表之间的关系;一对一一对一:一张表的一条记录只能与另外一条记录进行对应,反…