提高Mysql/PHP查询速度
我有两个表,一个有200万,另一个有3000万条记录, 我需要比较两张表上的记录,但速度非常慢 有人能提出提高速度的建议吗提高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
<?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。