gpt4 book ai didi

php - 获取数据时性能低下

转载 作者:行者123 更新时间:2023-11-29 03:19:24 25 4
gpt4 key购买 nike

我的网站运行速度非常慢,需要花费大量时间来加载数据。加载数据大约需要 2-3 分钟。你能建议我如何让它更快吗?我正在从多个表中获取数据。该数据库有许多条目,将近 25000 个条目。

下面是我目前使用的代码。

<table class="table table-striped table-bordered bootstrap-datatable datatable">
<tbody>
<?php // get all state
$sql=" SELECT bm.bank_name,b.bank_ifsc,e.emp_id,e.emp_code,
e.first_name,e.middle_name,e.last_name,
e.active_status as emp_status,
e.account_no FROM tblemployee e
Left Join tblbank_mst bm on bm.bank_id=e.fk_bank_id
Left Join tblbank b on b.bank_ifsc_id=e.fk_bank_ifsc_id
where e.del_status=0
and e.role_id=4
and e.is_admin=0 ";
if($_SESSION["loggedin_role_id"]==2)
{
$sql.=" and e.added_by=".$_SESSION["loggedin_emp_id"];
}
$sql.=" order by first_name";

// echo $sql; exit;

if(mysql_num_rows($result = mysql_query($sql))>0)
{
while($row = mysql_fetch_array($result))
{ ?>
<tr>
<td><?php echo $row['emp_code'];?> </td>
<td><?php echo $row['first_name'].' '.$row['middle_name'].' '.$row['last_name'];?> </td>
<td><?php echo $row['bank_name'];?> </td>
<td><?php echo $row['account_no'];?> </td>
<td><?php echo $row['bank_ifsc'];?> </td>
<td class="center">
<?php if($row['emp_status']==1){ ?>
<span class="label label-success">Active</span>
<?php }else{?>
<span class="label label-danger">Inactive</span>
<?php }?>
</td>
<td class="center">
<!--<a class="btn btn-success" href="#">
<i class="halflings-icon white zoom-in"></i>
</a>-->
<?php if($row['approve_status']==0){ ?>
<a class="btn btn-info" href="edit_employee.php?emp_id=<?php echo $row['emp_id'];;?>">
<i class="halflings-icon white edit"></i>
</a>
<a class="btn btn-danger" href="#" onClick="ConfirmDelete(<?php echo $row['emp_id'];?>)">
<i class="halflings-icon white trash"></i>
</a>
<?php }else{ echo "--"; }?>
</td>
</tr>

最佳答案

假设您最大的表是tblemployee,尝试在您的WHERE 子句中提到的三列上创建一个复合索引,即:

 WHERE e.del_status=0 and e.role_id=4 and e.is_admin=0

你可以这样做

 CREATE INDEX emp_del_role_admin 
ON tblemployee
(del_status, role_id, is_admin);

为什么这有帮助?因为 MySQL 的查询规划器可以随机访问索引以找到与 WHERE 语句匹配的表的第一行,然后它可以顺序读取索引以找到其余的匹配行。

当然,如果您的 WHERE 过滤器匹配您表中的数千行,您的页面仍然会很慢;加载、传输和呈现非常大的页面需要时间。

关于php - 获取数据时性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com