理念是:從表中選擇所有職業。在此之後,有多少專業人士在他的專欄中列出了專業ID。類別列存儲職業ID的逗號分隔(1,2,3,420)。職業表有604行。 我有下面的代碼:非常緩慢的MySQL請求+ php
<?php
$select_professions = mysql_query("SELECT * FROM professions");
if(mysql_num_rows($select_professions) == "0"){
echo"No registers in DB";
}else{while($row_professions = mysql_fetch_assoc($select_professions)){
$id = $row_professions['id'];
$count_profiles = mysql_query("SELECT
COUNT(FIND_IN_SET(professions.id, professional.category) > 0) AS profile_numbers
FROM
professions
INNER JOIN
professional
WHERE
FIND_IN_SET(professions.id,professional.category) > 0
AND
professions.id = $id
GROUP BY
professions.id");
$reg_profiles = mysql_fetch_assoc($count_profiles);
$numProfiles = $reg_profiles['profile_numbers'];
if($numProfiles > 4){
$style = 'display:none';
}else{
$style = '';
}
?>
我的基本問題是,爲什麼這是谷歌瀏覽器這麼慢? 它採取像15秒加載整個頁面與這些結果在一個HTML表格。在Edge或Firefox中大約需要5秒。我聽說Chrome最近使用了這麼多的內存,但我不相信它慢。這是我第一次在mysql上使用FIND_IN_SET函數。這是否會減慢請求速度?任何人都知道我在做什麼錯,或者如何優化?這是真實的工作,但我們知道等待15秒會讓用戶放棄或認爲該頁面無法工作。我不得不說,如果我在HeidiSQL上做同樣的諮詢,它需要1秒。
PHP是服務器端的瀏覽器無關 – 2015-09-27 05:16:32
創建和使用視圖和存儲過程..從PHP調用它們並獲得其結果。還有一件事,瀏覽器與此無關。 :) – aimme
FIND_IN_SET(professions.id,professional.category) – e4c5