哪个更快的mysql(查询)或PHP切换语句?

时间:2011-12-17 11:11:22

标签: php mysql performance comparison

我很想知道是否有人能指出我正确的方向。我想知道哪个更快.....我有一个游戏即时创建的情况有超过630,000组合我想知道如果我的脚本将寻求数据库的一个结果,会更快然后说一个大的开关声明? ....我创造的这个游戏是(我希望)假设是一个光明的打击,我不想要任何问题

<?php
// is this quicker 
mysql_query(....) - meanwhile remeber this table should have anywere from 600,000-630,000 rows
// or is this quicker
switch{
case --
....
case--
....
were here this will be in one page with anywwhere from 600,000 - 630,000 different case's ?
}
?>

4 个答案:

答案 0 :(得分:2)

php需要花费很长时间来解析页面,这可能会使它变慢,无论执行时间如何,这可能会或可能不会更慢(我以为我希望查询在这里也更快)。你也可以考虑关联数组而不是switch,如果查询可以做到这一点,但它不会使解析更快。并考虑内存消耗。

你可以试试。

答案 1 :(得分:0)

我几乎肯定会使用MySQL查询,特别是如果表格索引正确的话。切换方法将很难维护 - 例如,如果您以外的其他人需要向交换机添加新组合,该怎么办?

答案 2 :(得分:0)

PHP不使用切换表来优化案例选择。它将相当于一个巨大的if-elseif-else ...声明。

最好将查询用于正确索引表。

答案 3 :(得分:0)

好的,只需阅读,接受或离开它(不知道你的游戏是什么样的)。

如果这是一个高流量(许多用户)的游戏/网站,我会在至少两个表中分割数据,一个只保存ID,一些GROUP信息以及你所谓的COMBINATION。然后,所有其他附加数据将位于第二个表中,可通过JOIN访问该ID。

table 1
ID | GROUP | COMBINATION
1 | island | ABCDE
2 | house | FGHIJ

table2
ID | MORE INFO
1 | ...
2 | ...

我也会(如果可能的话)将这些GROUP分成表块。

// ok, this is an example for ID and range of IDs, but I think you can get it
partition by range (id)
(
PARTITION P1 VALUES LESS THAN (10),
PARTITION P2 VALUES LESS THAN (20)
)

逻辑拆分: - 无需创建单独的表 - 无需跨文件移动数据块

使用分区的4个主要原因: - 使单个插入和选择更快 - 使范围选择更快 - 帮助跨不同路径分割数据 - 有效存储历史数据 - 如果您需要立即删除大块数据