小编use*_*476的帖子

加权MySql查询搜索

我环顾四周,发现了一些类似我的问题,但他们缺乏解释.

我正在尝试搜索具有多列的表.我希望顶部的匹配列数最多的行和底部最少的行.我见过几种做法.我当前和可怕的方式是有很多MySQL查询和PHP做的工作.

    +----+-----------+----------+------+-------+
    | ID | firstName | lastName | more | stuff |
    +----+-----------+----------+------+-------+
    |  1 | Bob       | Hope     |    1 |   450 |
    |  2 | Steve     | Hope     |    0 |    29 |
    |  3 | Gary      | Flops    |    1 |     8 |
    +----+-----------+----------+------+-------+
Run Code Online (Sandbox Code Playgroud)

我希望能够搜索lastName = Hope OR more = 1 我希望Bob Hope能够成为最佳人选,因为他匹配了两个要求的东西.我知道在这个例子中这将会发生什么,但这只是一个例子.

如果我查询; lastName = Hope OR firstName = Steve.史蒂夫应该排在最前面,接着是鲍勃

我希望这很容易理解.有些人可以给我一个详细的解释说明.

php mysql sorting

2
推荐指数
1
解决办法
225
查看次数

GROUP BY和ORDER BY太慢了.怎么做得更快?

我试图为我的表创建一些统计数据,但它有超过300万行,所以它真的很慢.

我正在尝试为列找到最受欢迎的值,name并显示它弹出的次数.

我正在使用这个,但它不起作用,因为它太慢,我只是得到错误.

    $total = mysql_query("SELECT `name`, COUNT(*) as b FROM `people` GROUP BY `name` ORDER BY `b` DESC LIMIT 0,5;")or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

你可能会看到我正在尝试获取所有名称以及该名称被使用了多少次,但只显示前5名以希望加快它的速度.

我希望能够获得像这样的价值观

   while($row = mysql_fetch_array($result)){
        echo $row['name'].': '.$row['b']."\r\n";
   }
Run Code Online (Sandbox Code Playgroud)

它会显示这样的事情;

  Bob: 215
  Steve: 120
  Sophie: 118
  RandomGuy: 50
  RandomGirl: 50
Run Code Online (Sandbox Code Playgroud)

我不太关心以后订购名称,如RandomGirl和RandomGuy是错误的方式.

我想我已经提供了足够的信息.:)我希望这些名称尽可能不区分大小写.Bob应该与BoB,bOb,BOB等相同.

谢谢你的时间保罗

php mysql optimization performance

2
推荐指数
1
解决办法
1093
查看次数

标签 统计

mysql ×2

php ×2

optimization ×1

performance ×1

sorting ×1