【发布时间】:2017-12-12 18:38:47
【问题描述】:
我有超过 5500 万 行(产品)的产品数据库表(tabl_products),并且我使用 PDO 查询 来显示来自 tabl_products 表的每个产品,所以在这里是我的查询表结构和选择查询..
id | pr_name | pr_description | pr_qntty | pr_price
$pr_id = (int)$_GET['id'];
$select_pr = $con->prepare("SELECT pr_name, pr_description, pr_price FROM tabl_products WHERE id=:pr_id");
$select_pr->bindParam(":pr_id", $pr_id);
$select_pr->execute();
if(!($select_pr->rowCount()))
{
include '404.php'; exit();
}
$fetch_pr = $select_pr->fetch(PDO::FETCH_ASSOC);
echo $pr_name = $fetch_pr['pr_name'].'<br/>';
echo $pr_description = $pr_description['pr_description'].'<br/>';
echo $pr_price = $fetch_all['pr_price'];
以上查询需要2到3分钟才能显示单个产品信息。
那么如何在 5 到 10 秒内显示单个产品信息?
(来自评论)
CREATE TABLE IF NOT EXISTS tabl_products (
id int(11) NOT NULL AUTO_INCREMENT,
pr_name varchar(255) NOT NULL,
pr_description varchar(255) NOT NULL,
pr_qntty varchar(255) NOT NULL,
pr_price varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
【问题讨论】:
-
id列是否已编入索引? -
id 列是 AUTO_INCREMENT 并且是 PRIMARY KEY
-
表格有多少行?
-
tabl_products 表中正好有 55090297 行
-
一个完整的猜测,但是如果您正在运行 CPanel,我想知道您是否只是在共享服务器上,它要么被超额订阅,要么严重缺乏规范?
标签: php mysql performance pdo