Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化MySQL查询?_Sql_Mysql_Database_Database Design - Fatal编程技术网

如何优化MySQL查询?

如何优化MySQL查询?,sql,mysql,database,database-design,Sql,Mysql,Database,Database Design,我目前正在使用mysql w/PHP,因为这是我学到的,我从来没有使用过其他任何东西。在我当前的项目中,我有一个包含1000万行和大约10列的数据库,当我在本地(windows)环境和生产(linux)环境中进行复杂调用时,发现它非常慢。两台服务器都有超过10GB的ram。我已经安装了Zend AMF,所以所有数据传输都是二进制的 我是自学成才的,从来没有人教过我有效dbm的细节。我的第一个想法是将DB分解成块,然后更改我所有的php代码..看起来很麻烦,php代码可能会出错..有没有更好的方法

我目前正在使用mysql w/PHP,因为这是我学到的,我从来没有使用过其他任何东西。在我当前的项目中,我有一个包含1000万行和大约10列的数据库,当我在本地(windows)环境和生产(linux)环境中进行复杂调用时,发现它非常慢。两台服务器都有超过10GB的ram。我已经安装了Zend AMF,所以所有数据传输都是二进制的

我是自学成才的,从来没有人教过我有效dbm的细节。我的第一个想法是将DB分解成块,然后更改我所有的php代码..看起来很麻烦,php代码可能会出错..有没有更好的方法我不知道

我的UI是基于flash的,如果这意味着速度显著提高,我愿意更改中间件。在这一点上,我只知道PHP是一个中间件

我不想在这一点上学习另一个db,我认为必须有一些技巧来优化我的性能,但我想在我黑客攻击我的db之前得到一些想法

仅供参考:从用户的角度来看,数据库是只读的。用户没有向数据库输入任何新数据。此外,在数据库中的1000万行中,只有大约200000行被大量使用。(我不知道哪些200000行被大量使用,因为记录这些信息可能会更慢我的数据库)

每次通话都类似于:

SELECT   name, id, address 
FROM     table 
WHERE    date_added=? 
LIMIT    ?,? 
ORDER BY no_children ASC
。。。以及各种其他“选择”语句。

您是否在添加的
日期字段中有一个?如果没有,请创建一个,然后重试:

CREATE INDEX ix_date_added on table (date_added);
您可能还对MySQL参考手册中的以下文章感兴趣:


您还应该尝试在
SELECT
语句前面使用,以查看查询是否会使用任何索引。这通常是正确排除性能问题的第一步。

这个答案也是@Daniel Vassallo的答案之一:

CREATE INDEX ix_date_added_no_children on table (date_added, no_children);

是更正确的

,您仍然可以通过CuluS.Puls:<代码>限制> /COD>子句按<<代码>命令> <代码> >从该演示文稿中看,我应该考虑转换为YNDB,因为我的SELECT语句变得更加复杂。