日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/10 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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查询需要大量时间才能执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。