激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議

PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議

2021-11-21 17:12冷月& PHP教程

當(dāng)數(shù)據(jù)訪問(wèn)次數(shù)過(guò)多時(shí),建議使用redis緩存一些固定數(shù)據(jù),減少mysql查詢次數(shù)。今天小編給大家分享PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化建議,感興趣的朋友一起看看吧

一般情況下,導(dǎo)出超時(shí)可能都是以下三種情況:
  一、sql語(yǔ)句復(fù)雜,查詢時(shí)間過(guò)長(zhǎng);
  二、處理查詢后數(shù)據(jù)邏輯冗余;
  三、數(shù)據(jù)量過(guò)大導(dǎo)致響應(yīng)超時(shí)。
接下來(lái)分別給出這三種情況的優(yōu)化建議。

一、sql語(yǔ)句復(fù)雜,查詢時(shí)間過(guò)長(zhǎng)

  1、查看索引是否設(shè)置妥當(dāng),即所用的查詢條件是否有添加索引,當(dāng)然索引不是越多越好,只需給常用的查詢條件加上即可,一般采用B+樹(shù)的索引方式(具體原因可自行百度,不再贅述)
  2、在查詢語(yǔ)句中盡量避免IN、NOT IN、IS NULL、OR、!=、<>、LIKE、OR、NOT EXISTS這些查詢條件的出現(xiàn),會(huì)導(dǎo)致索引失效。
- IN查詢時(shí),可以考慮用BETWEEN來(lái)代替
- LIKE查詢時(shí),僅當(dāng)"%"在前時(shí)會(huì)索引失效,"%"在后是不會(huì)失效的
- 查詢條件里還要避免數(shù)字的出現(xiàn),使用字符串,數(shù)字也會(huì)導(dǎo)致索引失效,例如,查詢:"pid"=1,可以優(yōu)化為"pid"="1"
- 要盡量避免在循環(huán)中使用查詢語(yǔ)句,這種情況一般可以用join或者with來(lái)解決(當(dāng)涉及到跨庫(kù)時(shí),請(qǐng)謹(jǐn)慎使用這種方式!)
- 查詢時(shí),可以指定需要查詢的字段,排除掉不需要的字段避免資源浪費(fèi)
- 當(dāng)數(shù)據(jù)量多大時(shí),可以使用分頁(yè)和緩存來(lái)優(yōu)化(具體方法請(qǐng)參考數(shù)據(jù)量過(guò)大導(dǎo)致響應(yīng)超時(shí)部分)
溫馨提示:在執(zhí)行查詢語(yǔ)句后,可以通過(guò)show profiles來(lái)查詢語(yǔ)句的資源消耗情況來(lái)幫助你更好的優(yōu)化sql語(yǔ)句;關(guān)于查詢語(yǔ)句是否使用了索引,可以在查詢語(yǔ)句前加explain來(lái)查看索引使用情況,例如:
explain select * from user where id= '1';

二、處理查詢后數(shù)據(jù)邏輯冗余

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 在做數(shù)組循環(huán)時(shí),盡量使用continuebreak來(lái)減少?zèng)]必要的循環(huán);
 
- 盡量減少if嵌套層數(shù),在需要用到多個(gè)if-else時(shí),使用switch可以提高效率,特別是在數(shù)據(jù)量大時(shí)
- 當(dāng)進(jìn)行數(shù)組賦值時(shí),
  一次賦一個(gè)值,使用$arr[]=1,會(huì)比array_push($arr,"1"),更快,
  但是當(dāng)需要多次賦值時(shí),
    array_push($arr,"1","2","3",...),會(huì)比
    $arr[]="1";
    $arr[]="2"
    $arr[]="3"
    ...
  更快
  
- 遍歷數(shù)組進(jìn)行賦值時(shí),盡量使用引用的方式,減少內(nèi)存開(kāi)銷,例如:
  
    foreach($arr as &$item){
      $item = 1;
      ...
    }

三、數(shù)據(jù)量過(guò)大導(dǎo)致響應(yīng)超時(shí)

當(dāng)數(shù)量?jī)蛇^(guò)大,又不想用異步的方式導(dǎo)出excel文件時(shí),可以嘗試使用csv來(lái)作為到處格式,且查詢導(dǎo)出數(shù)據(jù)時(shí)可以使用分頁(yè)的方式查詢,導(dǎo)出時(shí)利用ob_flush進(jìn)行緩存。例如:

?
1
2
3
4
5
6
7
8
9
10
11
$page = 1;    // 頁(yè)面
$pageSize = 1000;    //每頁(yè)條數(shù)
while(
  $list = Db::name("user")->page($page)->limit($pageSize)->select()
)
{
  foreach($list as &$item){
    // TODO 進(jìn)行相應(yīng)的邏輯處理
  }
  $page++;
}

當(dāng)數(shù)據(jù)訪問(wèn)次數(shù)過(guò)多時(shí),建議使用redis緩存一些固定數(shù)據(jù),減少mysql查詢次數(shù)。
當(dāng)然,最好的方式還是使用異步的方式導(dǎo)出,建議使用python或者go語(yǔ)言搭建微服務(wù)來(lái)進(jìn)行導(dǎo)出。

到此這篇關(guān)于PHP導(dǎo)出數(shù)據(jù)超時(shí)的優(yōu)化的文章就介紹到這了,更多相關(guān)PHP導(dǎo)出數(shù)據(jù)超時(shí)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/ycold/p/14984368.html

延伸 · 閱讀

精彩推薦
932
主站蜘蛛池模板: 亚洲欧美国产精品va在线观看 | 日本欧美中文字幕 | av免费在线不卡 | 久久55 | 久久久久久久久日本理论电影 | japan护士性xxxⅹhd | 91精品国产777在线观看 | 成人国产精品一区二区毛片在线 | 久久久久免费精品国产小说色大师 | 动漫孕妇被羞羞视频 | 黄色毛片免费看 | 国产精品一区二区三区99 | 本站只有精品 | 视频一区二区三区在线播放 | 欧美久久一区二区 | 亚洲影院在线观看 | 蜜桃视频网站在线观看 | 韩国美女一区 | 亚洲精品一区国产精品丝瓜 | 精品国产欧美一区二区 | 精品久久www | 亚洲一区中文字幕 | 国产麻豆久久 | 黄色a级片视频 | 被啪羞羞视频在线观看 | 精品中文字幕在线播放 | 成av人在线观看 | h色网站免费观看 | 国产精品99久久久久久大便 | 亚洲综合一区在线观看 | 久久久日韩精品一区二区三区 | 欧美人与禽性xxxxx杂性 | 欧美成人理论片乱 | 日本一区二区不卡在线观看 | 欧美一页 | 日本中文字幕电影在线观看 | 免费看黄色一级大片 | 国产一区二区视频精品 | 一级做a爱片性色毛片 | 黄色av一区二区三区 | 中文字幕在线观看www |