只是一个快速查询?

时间:2014-05-13 20:01:05

标签: php mysql database query-optimization

我有一个搜索设置,我正在尝试优化查询以使用MySQL ver14.14 5.5.36 x64_64和php版本是5.2.17。

数据库中的每个表中有数十万个项目,当有50个以上的用户在线时,完成搜索的时间变得无法容忍。

基本上,我使用以下方法遍历数据库中的表:

$result =  mysql_query("show tables",$dbc1); 
while($table = mysql_fetch_array($result)) {
$tablename = $table[0];

然后我将执行此查询:

"SELECT * FROM $tablename WHERE FirstName like '$SanitizedFirstName%' and LastName like '$SanitizedLastName%' order by ID asc "

然后我循环并输出结果

while($row = mysql_fetch_array( $resultant2 )) {

以下是数据库的示例及其中的一些表

数据库:人

表:会议

  

| ID | FirstName |姓氏|
  | 111111111 |乔| SkypeMan |
  | 111111112 |苏珊| Yahooser |
  | 111111113 |比尔| Googleheim |
  | 111111114 |玛格丽特| Bingledorf |
  | 111111115 |马克| Aoldelson |

表:参议院

  

| ID | FirstName |姓氏|
  | 111111111 |托德| Sampleguy |
  | 111111112 |杰森|数据填写|
  | 111111113 |内夫| LoremIpsum |
  | 111111114 |威廉| Dotdotdot |
  | 111111115 |丽莎| Commaquote |

任何有关优化此功能的帮助都将不胜感激!

2 个答案:

答案 0 :(得分:1)

LIKE子句中尽可能摆脱=并使用WHERE。这可能会解决您的问题。它也有助于查看您的索引。我假设您已将FirstName和LastName编入索引。

答案 1 :(得分:0)

将LIKES转换为'='将真正有助于提高速度,但只要您将百分号仅保留在后面,就可以了。如果它确实运行缓慢,您应该确保在WHERE语句中使用的列上添加INDEX。添加索引非常简单:

CREATE INDEX index_name
ON table_name (column_name)