提高Mysql/PHP查询速度

提高Mysql/PHP查询速度,php,mysql,Php,Mysql,我有两个表,一个有200万,另一个有3000万条记录, 我需要比较两张表上的记录,但速度非常慢 有人能提出提高速度的建议吗 <?php $con = mysql_connect("localhost","root","password"); mysql_select_db("DMBONE", $con); $result = mysql_query("SELECT * FROM sucid where priority=''"); while($row = mysql_fetch_arra

我有两个表,一个有200万,另一个有3000万条记录, 我需要比较两张表上的记录,但速度非常慢

有人能提出提高速度的建议吗

<?php
$con = mysql_connect("localhost","root","password");
mysql_select_db("DMBONE", $con);
$result = mysql_query("SELECT * FROM sucid where priority=''");
while($row = mysql_fetch_array($result))
{
$result1 = mysql_query("SELECT count(*) FROM bills_logic where month(tdate)=8 and  x1=".$row[0]."");
if($row1 = mysql_fetch_array($result1))
{
if($row1[0]==0)
{
echo $row[0]."  DEAD\r\n";
mysql_query("update sucid set priority='DEAD' where bid=".$row[0]."") or die(mysql_error());
}
else
{
echo $row[0]."  ".$row1[0]."\r\n";
mysql_query("update sucid set priority='".$row1[0]."' where bid=".$row[0]."") or die(mysql_error());
}
}
}
?>


CREATE TABLE `sucid` (
 `bid` varchar(500) NOT NULL,
 `priority` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

    CREATE TABLE `bills_logic` (
 `bid` int(11) NOT NULL AUTO_INCREMENT,
 `num` varchar(500) NOT NULL,
 `stat` varchar(500) NOT NULL,
 `tdate` varchar(500) NOT NULL,
 `x1` varchar(500) NOT NULL,
 `amt` varchar(500) NOT NULL DEFAULT '30',
 PRIMARY KEY (`bid`)
) ENGINE=InnoDB AUTO_INCREMENT=35214848 DEFAULT CHARSET=latin1

我建议您创建索引,尤其是为您用来界定搜索范围的值创建索引。在您的特定情况下,我将首先为字段优先级创建一个索引


有关mysql如何处理索引的更多信息,请看一看。

是的,您可能有一个大问题。速度和查询性能取决于:

  • 数据库模式表结构
  • 机器硬件规格
  • 您的查询结构
  • 表索引
  • 希望所有数据库专家不要将blob包含在主表的同一个表中。当我们谈论要获取的一百万数据时,这是所有数据库的一个大问题。最好始终将blob数据分离为最佳实践


    这只是附加信息,希望它能帮助其他人。

    您找到了世界上最慢的加入
    的方法。您可能会更乐意使用老式的方式(但只是足够时髦地使用
    mysqli
    ):


    工作得很有魅力,我真的需要好好复习一下我的sql。