重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這個問題在PHP的官方網站上叫緩沖查詢和非緩沖查詢(Buffered and Unbuffered queries)。PHP的查詢缺省模式是緩沖模式。也就是說,查詢數據結果會一次全部提取到內存里供PHP程序處理。這樣給了PHP程序額外的功能,比如說,計算行數,將指針指向某一行等。更重要的是程序可以對數據集反復進行二次查詢和過濾等操作。但這種緩沖查詢模式的缺陷就是消耗內存,也就是用空間換速度。
成都創新互聯專業為企業提供橫峰網站建設、橫峰做網站、橫峰網站設計、橫峰網站制作等企業網站建設、網頁設計與制作、橫峰企業網站模板建站服務,10余年橫峰做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
相對的,另外一種PHP查詢模式是非緩沖查詢,數據庫服務器會一條一條的返回數據,而不是一次全部返回,這樣的結果就是PHP程序消耗較少的內存,但卻增加了數據庫服務器的壓力,因為數據庫會一直等待PHP來取數據,一直到數據全部取完。
很顯然,緩沖查詢模式適用于小數據量查詢,而非緩沖查詢適應于大數據量查詢。
當查詢類容過多時會導致php內存溢出,建議加limit分段查詢,或著修改php.ini文件的
memory_limit 字段,默認是128M,改成你需要的大小
thinkPHP 查詢數據庫中id最大的一條數據操作如下:
先給數據庫中的這個字段(sort)分組 再降序排列, 取第1條。
通過步驟1 獲取了 sort值為最大的數據, 然后在 通過 where sort ='步驟1取的值'。
查詢最大ID,select max(id) from table。
查詢最大ID的記錄 select * from table where id = (select max(id) from table)
或者select * from table t where ?not exists (select 1 from table t1 where t1.id t.id)
表結構可能有問題,你用來查詢的字段是鍵么?不是的話在百萬數據量時時間長是必然的,還有你的SQL語句,如果有聯表查之類的,而表之間的關聯和條件有非鍵項,那慢也是正常的