Heim Datenbank MySQL-Tutorial mysql随机查询若干条数据的方法_MySQL

mysql随机查询若干条数据的方法_MySQL

Jun 01, 2016 pm 01:25 PM
google mysql

bitsCN.com

在mysql中查询5条不重复的数据,使用以下:


SELECT * FROM `table` ORDER BY RAND() LIMIT 5

就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上
搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。


SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;

但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。
上面的语句采用的是JOIN,mysql的论坛上有人使用


SELECT *
FROM `table`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;

我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。
于是我把语句改写了一下。


SELECT * FROM `table`
WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) 
ORDER BY id LIMIT 1;

这下,效率又提高了,查询时间只有0.01秒
最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。
完整查询语句是:


SELECT * FROM `table`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`))) 
ORDER BY id LIMIT 1;
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;

最后对这两个语句进行分别查询10次,
前者花费时间 0.147433 秒
后者花费时间 0.015130 秒
看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。

bitsCN.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gerüchten zufolge sollen Google Pixel 9 und Pixel 9 Pro bei der Veröffentlichung über die Creative Assistant AI verfügen Gerüchten zufolge sollen Google Pixel 9 und Pixel 9 Pro bei der Veröffentlichung über die Creative Assistant AI verfügen Jun 22, 2024 am 10:50 AM

Gerüchten zufolge sollen Google Pixel 9 und Pixel 9 Pro bei der Veröffentlichung über die Creative Assistant AI verfügen

Google Tensor G4 von Pixel 9 Pro XL hinkt Tensor G2 in Genshin Impact Google Tensor G4 von Pixel 9 Pro XL hinkt Tensor G2 in Genshin Impact Aug 24, 2024 am 06:43 AM

Google Tensor G4 von Pixel 9 Pro XL hinkt Tensor G2 in Genshin Impact

Der APK-Teardown der Google-App-Beta enthüllt neue Erweiterungen für den Gemini AI-Assistenten Der APK-Teardown der Google-App-Beta enthüllt neue Erweiterungen für den Gemini AI-Assistenten Jul 30, 2024 pm 01:06 PM

Der APK-Teardown der Google-App-Beta enthüllt neue Erweiterungen für den Gemini AI-Assistenten

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Google Pixel 9-Smartphones werden trotz siebenjähriger Update-Verpflichtung nicht mit Android 15 auf den Markt kommen Google Pixel 9-Smartphones werden trotz siebenjähriger Update-Verpflichtung nicht mit Android 15 auf den Markt kommen Aug 01, 2024 pm 02:56 PM

Google Pixel 9-Smartphones werden trotz siebenjähriger Update-Verpflichtung nicht mit Android 15 auf den Markt kommen

Der neue Google Pixel-Desktopmodus wird in einem neuen Video als mögliche Alternative zu Motorola Ready For und Samsung DeX vorgestellt Der neue Google Pixel-Desktopmodus wird in einem neuen Video als mögliche Alternative zu Motorola Ready For und Samsung DeX vorgestellt Aug 08, 2024 pm 03:05 PM

Der neue Google Pixel-Desktopmodus wird in einem neuen Video als mögliche Alternative zu Motorola Ready For und Samsung DeX vorgestellt

Google Pixel 9 Pro XL wird im Desktop-Modus getestet Google Pixel 9 Pro XL wird im Desktop-Modus getestet Aug 29, 2024 pm 01:09 PM

Google Pixel 9 Pro XL wird im Desktop-Modus getestet

Google öffnet AI Test Kitchen & Imagen 3 für die meisten Nutzer Google öffnet AI Test Kitchen & Imagen 3 für die meisten Nutzer Sep 12, 2024 pm 12:17 PM

Google öffnet AI Test Kitchen & Imagen 3 für die meisten Nutzer

See all articles