如何优化MySQL查询?
我目前正在使用mysql w/PHP,因为这是我学到的,我从来没有使用过其他任何东西。在我当前的项目中,我有一个包含1000万行和大约10列的数据库,当我在本地(windows)环境和生产(linux)环境中进行复杂调用时,发现它非常慢。两台服务器都有超过10GB的ram。我已经安装了Zend AMF,所以所有数据传输都是二进制的 我是自学成才的,从来没有人教过我有效dbm的细节。我的第一个想法是将DB分解成块,然后更改我所有的php代码..看起来很麻烦,php代码可能会出错..有没有更好的方法我不知道 我的UI是基于flash的,如果这意味着速度显著提高,我愿意更改中间件。在这一点上,我只知道PHP是一个中间件 我不想在这一点上学习另一个db,我认为必须有一些技巧来优化我的性能,但我想在我黑客攻击我的db之前得到一些想法 仅供参考:从用户的角度来看,数据库是只读的。用户没有向数据库输入任何新数据。此外,在数据库中的1000万行中,只有大约200000行被大量使用。(我不知道哪些200000行被大量使用,因为记录这些信息可能会更慢我的数据库) 每次通话都类似于:如何优化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代码可能会出错..有没有更好的方法
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语句变得更加复杂。