肯定會很慢,for循環(huán)一次那就讀取數(shù)據(jù)庫一次,循環(huán)上萬次你說數(shù)據(jù)庫能受得了不?最好一次去除數(shù)據(jù),然后再對去除的數(shù)據(jù)操作
創(chuàng)新互聯(lián)公司主營柳城網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app軟件定制開發(fā),柳城h5微信小程序定制開發(fā)搭建,柳城網(wǎng)站營銷推廣歡迎柳城等地區(qū)企業(yè)咨詢
雙層循環(huán)啊, 數(shù)量是 $gift * $fi的個數(shù)。 百萬級別的。
簡單的就是將excel中的數(shù)據(jù)導入的數(shù)據(jù)庫中(可以是另外一個表),將驗證碼字段建索引。然后再排查重復的,純sql就很快了。
foreach 只是php中最常用的函數(shù),其本身是并不會耗費太多的系統(tǒng)運行內(nèi)存的。
造成你讀取數(shù)據(jù)太慢的原因一般是出現(xiàn)在服務器上,或者說你的電腦配置低運行這些代碼需要多花一點時間;
也有可能是你的數(shù)據(jù)庫數(shù)據(jù)太多了,一次性讀取出來會很卡,這個時候你就需要分頁顯示這些數(shù)據(jù)了。
那就用sphinx 技術(shù),目前這個是最好的,沒有之一。
下面是我百度百科弄過來的,怎么使用還得你自己看白皮書了。
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查詢速度不到0.1秒);
高可用性 (單CPU上最大可支持100 GB的文本,100M文檔);
提供良好的相關性排名
支持分布式搜索;
提供文檔摘要生成;
提供從MySQL內(nèi)部的插件式存儲引擎上搜索
支持布爾,短語, 和近義詞查詢;
支持每個文檔多個全文檢索域(默認最大32個);
支持每個文檔多屬性;
支持斷詞;
支持單字節(jié)編碼與UTF-8編碼。[1]
數(shù)據(jù)庫的讀取能一次查詢完成的盡量不要分成多次查詢
不知道你用的是什么框架,如果有where_in方法的話可以用它來解決,先要構(gòu)造出order_sn值的數(shù)組
沒有的話就自己構(gòu)造'or'條件字符串,然后用where一次查詢完成
給你個思路
先最大化 PHP 效率充分利用 系統(tǒng)資源。
把 sql 拆開比如2萬一個用一個 php 去跑 總共用5個 php 一起跑。
然后最大化 mysql 效率
查一下mysql 的瓶頸在哪。針對性的去優(yōu)化。
查詢慢 就看看索引什么的
寫慢就查查 buffer 什么的。
這里強烈建議讀寫分離。
用不通的數(shù)據(jù)庫實例去分別處理讀寫。
再看看磁盤 IO 性能??纯搓犃袛?shù)據(jù)。不行就上陣列?;蛘邌伪聿渴饐蝹€磁盤?;蛘咦x寫在不同的磁盤進行。
當然用緩存也可以。
比如把10萬條都獨出來存到 memcache 等內(nèi)存緩存中。循環(huán)處理數(shù)據(jù)的時候讀內(nèi)存的數(shù)據(jù)不用查數(shù)據(jù)庫。
還有終極大招。
你直接把數(shù)據(jù)庫都搬內(nèi)存里面。。。