mysql:21个性能优化最佳实践之6[不要使用ORDER BY RAND()]
2014-01-07 12:43
597 查看
千万不要使用
ORDER BY RAND()
想打乱返回的数据行?随机挑一个数据?真不知道谁发明了这种用法,但很多新手很喜欢这样用。但你确不了解这样做有多么可怕的性能问题。
如果你真的想把返回的数据行打乱了,你有N种方法可以达到这个目的。这样使用只让你的数据库的性能呈指数级的下降。这里的问题是:MySQL会不得不去执行RAND()函数(很耗CPU时间),而且这是为了每一行记录去记行,然后再对其排序。就算是你用了Limit 1也无济于事(因为要排序)。
下面的示例是随机挑一条记录:
ORDER BY RAND()
想打乱返回的数据行?随机挑一个数据?真不知道谁发明了这种用法,但很多新手很喜欢这样用。但你确不了解这样做有多么可怕的性能问题。
如果你真的想把返回的数据行打乱了,你有N种方法可以达到这个目的。这样使用只让你的数据库的性能呈指数级的下降。这里的问题是:MySQL会不得不去执行RAND()函数(很耗CPU时间),而且这是为了每一行记录去记行,然后再对其排序。就算是你用了Limit 1也无济于事(因为要排序)。
下面的示例是随机挑一条记录:
相关文章推荐
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- msql性能优化的21个最佳实践和mysql索引的使用
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- [重要] -- MySQL性能优化的21个最佳实践 和 mysql使用索引
- 【MySQL性能优化】MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- mysql:21个性能优化最佳实践之3[当只要一行数据时使用 LIMIT 1]
- MySQL性能优化的21个最佳实践 和 mysql使用索引(转)
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引(转)
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引【转载】
- 【转】【备忘录】MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- mysql:21个性能优化最佳实践之5[在Join表的时候使用相当类型的列,并将其索引]