理念是:从表中选择所有职业。在此之后,有多少专业人士在他的专栏中列出了专业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