php网页中的SQL查询在显示30000个条目时运行得非常慢
我有一个大约30000行的数据库,我想在网页中显示。不幸的是,获取数据需要很长的时间,在此操作过程中会多次冻结浏览器。我怎样才能加快速度php网页中的SQL查询在显示30000个条目时运行得非常慢,php,html,mysql,sql,phpmyadmin,Php,Html,Mysql,Sql,Phpmyadmin,我有一个大约30000行的数据库,我想在网页中显示。不幸的是,获取数据需要很长的时间,在此操作过程中会多次冻结浏览器。我怎样才能加快速度 <?php require_once'includes/session.php'; ?> <?php require_once'includes/db_connect.php'; ?> <?php $page = $_SERVER['PHP_SELF']; $sec = "50"; ?> <!DOCTYPE
<?php require_once'includes/session.php'; ?>
<?php require_once'includes/db_connect.php'; ?>
<?php
$page = $_SERVER['PHP_SELF'];
$sec = "50";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="<?php echo $sec?>;URL='<?php echo $page?>'">
<title> Real Time Eelection Results</title>
<link rel="stylesheet" type="text/css" href="css/css-table.css">
<script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="js/style-table.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
</head>
<body>
<form action="search.php" method="GET">
<input type="text" name="sql" />
<input type="submit" value="Search" />
</form>
<?php
$sql = "SELECT * FROM data_db"
;
if($result = mysqli_query($connection, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table>";
echo "<thead>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>DATE</th>";
echo "<th>Data 1 </th>";
echo "<th>Data 2 </th>";
echo "<th>Data 3</th>";
echo "<th>Data 4 </th>";
echo "<th>Data 5</th>";
echo "<th>Data 6</th>";
echo "<th>Data 7 </th>";
echo "<th>Data 8</th>";
echo "<th>Data 9</th>";
echo "<th>Data 10</th>";
echo "<th>Data 11</th>";
echo "<th>Data 12</th>";
echo "<th>Data 13</th>";
echo "<th>Data 14</th>";
echo "<th>Data 15</th>";
echo "<th>Data 16</th>";
echo "<th>Data 17</th>";
echo "<th>Data 18</th>";
echo "<th>Data 19</th>";
echo "<th>Data 20</th>";
echo "<th>Data 21</th>";
echo "</tr>";
echo "</thead>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td><b>" . $row['id'] . "</td>";
echo "<td><b>" . $row['date'] . "</td>";
echo "<td><b>" . $row['data_1'] . "</td>";
echo "<td><b>" . $row['data_2'] . "</td>";
echo "<td><b>" . $row['data_3'] . "</td>";
echo "<td><b>" . $row['data_4'] . "</td>";
echo "<td><b>" . $row['data_5'] . "</td>";
echo "<td><b>" . $row['data_6'] . "</td>";
echo "<td><b>" . $row['data_7'] . "</td>";
echo "<td><b>" . $row['data_8'] . "</td>";
echo "<td><b>" . $row['data_9'] . "</td>";
echo "<td><b>" . $row['data_10'] . "</td>";
echo "<td><b>" . $row['data_11'] . "</td>";
echo "<td><b>" . $row['data_12'] . "</td>";
echo "<td><b>" . $row['data_13'] . "</td>";
echo "<td><b>" . $row['data_14'] . "</td>";
echo "<td><b>" . $row['data_15'] . "</td>";
echo "<td><b>" . $row['data_16'] . "</td>";
echo "<td><b>" . $row['data_17'] . "</td>";
echo "<td><b>" . $row['data_18'] . "</td>";
echo "<td><b>" . $row['data_19'] . "</td>";
echo "<td><b>" . $row['data_20'] . "</td>";
$pink = $row['data_21'];
echo "<td><b><a href =".$pink.'.jpg'.">Image</a></td>";
echo "</tr>";
}
echo "</table>";
// Close result set
mysqli_free_result($result);
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($connection);
}
// Close connection
mysqli_close($connection);
?>
</body>
</html>
一些浏览器将冻结,因为它们试图在页面加载时呈现页面。我在修改大型表时遇到了类似的问题。最适合我的解决方案是强制浏览器一次呈现整个表。您可以尝试将表放入一个隐藏的div中,并在加载页面后显示该div 例如:
<script type="text/javascript">
window.onload = function () {
document.getElementById("table-container").style.display = "block";
};
</script>
<div id="table-container" style="display: none;">
... table code here ...
</div>
window.onload=函数(){
document.getElementById(“表容器”).style.display=“块”;
};
... 表代码在这里。。。
使用分页,这是解决问题的方法
或者,如果您是php新手,可以用谷歌搜索出许多分页示例
有些在这里
是否不显示30000条记录?使用分页/过滤等。你能给我举个例子吗?我对这一点还不熟悉。我投票结束这个问题,因为你必须预计获取和显示30000条记录的速度会很慢。特别是当这些行中的每一行都有21列时。@Todd:MySQL分页的基础是从my_表中选择*,其中条件限制为0,20,您将
0
更改为20
,40
,等等。这是起始数字,第二个参数固定为20,这就是你想要的唱片数量。我试过这个只是为了绝望,我不敢相信它真的有效(+1)。