1
2
我尝试了你的例子,使用了相似数量的数据,在我的低端笔记本电脑(奔腾M 1,7 GHz)上,查询只需不到一秒钟的时间(第一次运行时,以后运行的时间甚至更少)。 你是不是碰巧忘记了id栏上的PK?你没提,所以只要问一下。。。如果您忘记了这一点,性能显然会很糟糕——更不用说每个DBA都会在没有PK的情况下畏缩。 否则,请尝试以下操作:
这将为您提供MySQL的查询计划。张贴(编辑你的问题),它应该更清楚什么花了这么长时间。 进一步考虑: 查询的性能总是有问题,因为您要求数据库读取和排序 所有地址 并展示它们。订单意味着它必须在归还任何东西之前阅读所有内容,所以它总是很慢。这样放置整个数据库有什么意义?用户会翻阅几千条记录吗?
|
2
1
如果您在服务器端没有太多的资源限制,并且这件事不会扩展太多,那么您没有太多的数据,因此您可以简单地在该级别进行排序和分页。 |
3
1
|
4
1
尝试将SQL更改为以下内容:
我找到了
|
5
0
让我看看。
地址一个左连接联系人c给出了大约20000*20000~40000000个比较结果 LEFT JOIN organizations为大约20000个结果提供了大约10000*20000~200万个比较
比我们需要的多一点(比如,大约4倍):
然后将这些加入到他们的地址中,保留前100名左右
然后加入这些组织
我确信语法是错误的,但我同样确信,减少每个阶段的结果集的原则指向了一种有指导意义的方法。我可能也做了一些折衷,结果接近10秒的答案,但要快得多。 |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |