首页 > 解决方案 > MySql 8.0 读取速度

问题描述

我在这里需要一些专业知识,我有一个庞大的 SQL 数据库,可以与我编写的移动应用程序结合使用。我需要很长时间才能从数据库中获取结果,有时会超过 20 到 25 秒。我设法提高了速度,现在检索结果需要 40 秒。我希望有人可能对我如何加快查询速度并在 20 秒内更快地返回结果有所了解。

主表为 4 列 + 1 为“id”列,数据库包含 15,254,543 行数据。目前它被设置为一个 InnoDB,有 4 个索引,大小约为 1.3GB。

我的服务器是 GoDaddy VPS,1 个 CPU,4 GB 内存。这是专用的,我不与其他任何人共享资源,除了一个非常基本的网站之外,它的唯一目的是 SQL 数据库。

请注意,数据库记录数不会变得更大,我真的只需要找出一种更好的方法来更快地返回查询,然后 20 秒。

更详细地说,Android 应用程序通过 php 文档连接到我的网站以查询并返回结果,我认为可能有更好的方法来解决这个问题,这可能是陷阱所在。一个有趣的提示是,当我在 PHP My Admin 中时,我可以在 3 秒内进行搜索并获得结果,这也表明问题可能出在我的 php 文档中。这是我为完成这项工作而编写的下面的 php 文档。

<?php
require "conn.php";
$FSC = $_POST["FSC"];
$PART_NUMBER = $_POST["NIIN"];

$mysql_qry_1 = "select * from MyTable where PART_NUMBER like '$PART_NUMBER';";

$result_1 = mysqli_query($conn ,$mysql_qry_1);

if(mysqli_num_rows($result_1) > 0) {
    $row = mysqli_fetch_assoc($result_1);
    $PART_NUMBER = $row["PART_NUMBER"];
    $FSC = $row["FSC"];
    $NIIN = $row["NIIN"];
    $ITEM_NAME = $row["ITEM_NAME"];
    
    echo $ITEM_NAME, ",>" .$PART_NUMBER, ",>" .$FSC, "" .$NIIN;

//usage stats   
$sql = "INSERT INTO USAGE_STATS (ITEM_NAME, FSC, NIIN, PART_NUMBER)
VALUES ('$ITEM_NAME', '$FSC', '$NIIN', '$PART_NUMBER')";

if ($conn->query($sql) === TRUE) {
    $row = mysqli_insert_id($conn);
} else {
    //do nothing
}
//

} else {
    echo "NO RESULT CHECK TO ENSURE CORRECT PART NUMBER WAS ENTERED ,> | ,>0000000000000";
}

$mysql_qry_2 = "select * from MYTAB where FSC like '$FSC' and NIIN like '$NIIN';";

$result_2 = mysqli_query($conn ,$mysql_qry_2);

if(mysqli_num_rows($result_2) > 0) {
    $row = mysqli_fetch_assoc($result_2);
    $AD_PART_NUMBER = $row["PART_NUMBER"];

    if(mysqli_num_rows($result_2) > 1){
        echo ",>";
        while($row = mysqli_fetch_assoc($result_2)) {
            $AD_PART_NUMBER = $row["PART_NUMBER"];
            echo $AD_PART_NUMBER, ",  ";
        }
    
        } else {
            echo ",> | NO ADDITIONAL INFO FOUND | ";
        }
} else {
    echo ",> | NO ADDITIONAL INFO FOUND | ";
}


mysqli_close($con);
?>

所以我的问题是如何利用我拥有的可用资源提高读取速度,或者我当前的 PHP 文档是否存在导致瓶颈的问题?

标签: phpmysqldatabase

解决方案


通过选择已索引的特定列,您将获得更快的读取速度,而不是使用 LIKE。

SELECT * FROM table_name FORCE INDEX (index_list) WHERE condition;

另一个大大加快 Mysql 的事情是在 VPS 服务器上使用 SSD 驱动器。SSD 驱动器将大大减少扫描这么大的数据库所需的时间。


推荐阅读