【发布时间】:2013-06-14 20:25:30
【问题描述】:
数据库中有 700,000 个元素 我在 id 上有一个索引 我还有一个关于省的索引,一个长度为 30 的 varchar(尽管我认为最大省的名称长度为 12)
所以
Create table (
id serial primary key watever,
price double not null,
address varchar(200)not null,
province varchar(30)not null,
description text not null,
status varchar(8) not null,
type varchar(30) not null,
category text not null,
size int(11) not null,
bultin int(4),
bed int(2),
bath int(2),
extras text,
posted_by int foregin key(user.id or whatever)
);
这个页面大约需要 2 秒
$sqlquery = "SELECT DESCRIPTION, ADDRESS, SIZE, BUILTIN, BED, BATH, PRICE
FROM listings
WHERE PRICE BETWEEN $min and $max AND BED between $minbr AND $maxbr AND CATEGORY =
'$cat' AND TYPE = '$type' AND PROVINCE like '%$province%'";
while ($row = mysqli_fetch_array($listings)) {
echo $row['DESCRIPTION'] . " Located at " . $row['ADDRESS'] . " " . $province. " "
. $row['SIZE'] . " sqft" . ", built in " . $row['BUILTIN'] . " " . $row['BED'] . "Bedroom, "
. $row['BATH'] . " Bathroom for $" . $row['PRICE'] . "
<br>
";
我已经阅读了一些关于提高 SQL 查询效率的教程,但是它们根本没有改变正在发生的事情的速度。 (也许所有速度损失都在PHP中?!?我认为这很有可能,如果是这样我该如何优化php?)
编辑:在 phpmyadmin 上,我运行了查询,它花费了运行 php 页面所需的时间。问题显然是查询而不是 PHP。
【问题讨论】:
-
获取分析工具并分析结果。
-
如果您有权访问您的服务器,请直接通过 MySQL 控制台运行此查询并查看它的日志记录。此外,在您的 SELECT 前面放置一个
EXPLAIN命令,以查看幕后发生的情况。这应该是您的第一步。 -
耗时和PHP页面一样长!我还将获得一个配置文件工具。有什么建议吗?
-
如果花费相同的时间,那么您知道 MySQL 是瓶颈。运行 '
explain看看会发生什么。 -
尝试在 mysql 客户端中“解释”你的 sql,如果需要,添加索引。
标签: php mysql sql optimization