Maison base de données tutoriel mysql MySQL查询随机数据的4种方法和性能对比_MySQL

MySQL查询随机数据的4种方法和性能对比_MySQL

Jun 01, 2016 pm 01:17 PM
优缺点

下面从以下四种方案分析各自的优缺点。
方案一:
SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;
这种方法的问题就是非常慢。原因是因为MySQL会创建一张零时表来保存所有的结果集,然后给每个结果一个随机索引,然后再排序并返回。
有几个方法可以让它快起来。
基本思想就是先获取一个随机数,然后使用这个随机数来获取指定的行。
由于所有的行都有一个唯一的id,我们将只取最小和最大id之间的随机数,然后获取id为这个数行。为了让这个方法当id不连续时也能有效,我们在最终的查询里使用”>=”代替”=”。
为了获取整张表的最小和最大id,我们使用MAX()和MIN()两个聚合函数。这两个方法会返回指定组里的最大和最小值。在这里这个组就是我们表里的所有id字段值。
方案二:
$range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM `table` ");
$range_row = mysql_fetch_object( $range_result );
$random = mt_rand( $range_row->min_id , $range_row->max_id );
$result = mysql_query( " SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 ");
就像我们刚才提到的,这个方法会用唯一的id值限制表的每一行。那么,如果不是这样情况怎么办?
下面这个方案是使用了MySQL的LIMIT子句。LIMIT接收两个参数值。第一个参数指定了返回结果第一行的偏移量,第二个参数指定了返回结果的最大行数。偏移量指定第一行是0而不是1。
为了计算第一行的偏移量,我们使用MySQL的RAND()方法从0到1之间生成一个随机数。然后我们把这个数字跟我们用COUNT()方法获取倒的表记录数相乘。由于LIMIT的参数必须是int型而不能是float,我们使用FLOOR()来处理结果。FLOOR()会计算小于表达式的最大值。最终的代码就是这样:
方案三:
$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
$offset_row = mysql_fetch_object( $offset_result );
$offset = $offset_row->offset;
$result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );
在MySQL 4.1以后我们可以使用子子查询合并上面两个方法:
方案四:
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
这个方案跟方案二有同样的弱点,只对有唯一id值的表有效。
记住我们最初寻找选择随机行的替代方法的原因,速度!所以,这些方案的在执行时间上的比较会怎么样?我不会指出硬件和软件配置或者给出具体的数字。大概的结果是这样的:
最慢的是解决方案一(我们假定它用了100%的时间)。
方案二用了79%
方案三

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

A lire avant d'acheter un système : Analyse des avantages et inconvénients de Win11 et Win10 A lire avant d'acheter un système : Analyse des avantages et inconvénients de Win11 et Win10 Mar 28, 2024 pm 01:33 PM

À l'ère de l'information d'aujourd'hui, les ordinateurs personnels jouent un rôle important en tant qu'outil indispensable dans notre vie quotidienne. En tant que logiciel de base des ordinateurs, le système d'exploitation affecte notre expérience d'utilisation et notre efficacité au travail. Sur le marché, le système d'exploitation Windows de Microsoft a toujours occupé une position dominante, mais les gens sont désormais confrontés au choix entre le dernier Windows 11 et l'ancien Windows 10. Pour les consommateurs ordinaires, lorsqu'ils choisissent un système d'exploitation, ils ne regardent pas seulement le numéro de version, mais comprennent également ses avantages et ses inconvénients.

Quels sont les avantages et les inconvénients des modèles ? Quels sont les avantages et les inconvénients des modèles ? May 08, 2024 pm 03:51 PM

Modèles : avantages et inconvénients Le modèle est une technique de programmation puissante qui vous permet de créer des blocs de code réutilisables. Il présente de nombreux avantages, mais aussi certains inconvénients. Avantages : Réutilisabilité du code : les modèles vous permettent de créer du code commun qui peut être réutilisé dans toute votre application, réduisant ainsi les efforts de duplication et de maintenance. Cohérence : les modèles garantissent que les extraits de code sont implémentés de la même manière à différents endroits, améliorant ainsi la cohérence et la lisibilité du code. Maintenabilité : les modifications apportées à un modèle sont reflétées simultanément dans tout le code qui l'utilise, simplifiant ainsi la maintenance et les mises à jour. Efficacité : la création de modèles permet d'économiser du temps et des efforts, car vous n'avez pas besoin d'écrire le même code encore et encore. Flexibilité : les modèles vous permettent de créer des blocs de code configurables qui peuvent être facilement adaptés aux différents besoins des applications. défaut

Quels sont les avantages et les inconvénients du fonctionnement des servlets Java ? Quels sont les avantages et les inconvénients du fonctionnement des servlets Java ? Apr 16, 2024 pm 03:18 PM

JavaServlet est une classe Java utilisée pour créer des pages Web dynamiques et sert de pont entre le client et le serveur. Principe de fonctionnement : recevoir des requêtes, initialiser le Servlet, traiter les requêtes, générer des réponses et fermer le Servlet. Avantages : Portable, évolutif, sécurisé et facile à utiliser. Inconvénients : surcharge, couplage et gestion de l'état. Cas pratique : Créez un Servlet simple pour afficher le message "Bonjour, Servlet !"

Avantages et inconvénients de l'utilisation du chinois pour nommer les variables Java Avantages et inconvénients de l'utilisation du chinois pour nommer les variables Java Feb 18, 2024 am 10:14 AM

Avantages et inconvénients de l'utilisation du chinois pour nommer les variables Java Dans la programmation Java, nous utilisons généralement l'anglais pour nommer des identifiants tels que des variables, des méthodes et des classes. Cependant, nous pouvons parfois également envisager d’utiliser le chinois comme élément d’identification. Cet article explorera les avantages et les inconvénients de l'utilisation de variables Java nommées en chinois et donnera quelques exemples de code spécifiques. Avantage 1 : améliorer la lisibilité du code. L'utilisation de variables Java nommées en chinois peut rendre le code plus facile à comprendre et à lire. Après tout, notre cerveau comprend et reconnaît le chinois plus naturellement et plus couramment que l’anglais. Pour les non-anglais

Comparaison des avantages et inconvénients des frameworks PHP : Lequel est le meilleur ? Comparaison des avantages et inconvénients des frameworks PHP : Lequel est le meilleur ? Jun 04, 2024 pm 03:36 PM

Le choix du framework PHP dépend des besoins du projet et des compétences du développeur : Laravel : riche en fonctionnalités et en communauté active, mais a une courbe d'apprentissage abrupte et des frais généraux élevés en termes de performances. CodeIgniter : léger et facile à étendre, mais a des fonctionnalités limitées et moins de documentation. Symfony : Communauté modulaire et forte, mais problèmes de performances complexes. ZendFramework : de niveau entreprise, stable et fiable, mais volumineux et coûteux en licence. Slim : micro-framework, rapide, mais avec des fonctionnalités limitées et une courbe d'apprentissage abrupte.

Résumé du compilateur Golang : explorez les avantages et les inconvénients des différents compilateurs Résumé du compilateur Golang : explorez les avantages et les inconvénients des différents compilateurs Jan 19, 2024 am 10:44 AM

Avec le développement de Golang, de plus en plus de compilateurs ont été développés. Lors du choix d'un compilateur, les développeurs doivent prendre en compte de nombreux facteurs, tels que la fiabilité, les performances, la facilité d'utilisation, etc. Cet article résumera quelques compilateurs Golang courants et explorera leurs avantages et inconvénients pour aider les développeurs à mieux choisir le compilateur qui leur convient. Le compilateur officiel Go Le compilateur officiel Go est le compilateur par défaut de Golang et un compilateur largement reconnu dans la communauté Golang. Il présente les avantages suivants : bonne stabilité, petite taille et compilation

Langage C et Python : analyse des scénarios applicables et avantages et inconvénients Langage C et Python : analyse des scénarios applicables et avantages et inconvénients Mar 22, 2024 am 11:24 AM

Langage C et Python : analyse des scénarios applicables et avantages et inconvénients Dans le domaine de la programmation informatique, le langage C et Python sont deux langages de programmation très populaires. Ils présentent chacun des avantages et des inconvénients uniques et conviennent à différents scénarios. Cet article procédera à une analyse approfondie du langage C et de Python, discutant de leurs scénarios applicables, de leurs avantages et de leurs inconvénients. 1. Scénarios applicables du langage C : le langage C est un langage de programmation orienté processus avec une efficacité élevée et d'excellentes performances. Il convient au développement de logiciels système, de pilotes et de systèmes embarqués qui nécessitent un degré élevé de contrôle et d'efficacité.

Comparaison des disques SSD et des disques durs mécaniques Comparaison des disques SSD et des disques durs mécaniques Feb 26, 2024 pm 06:21 PM

Avantages et inconvénients des disques SSD et des disques durs mécaniques Ces dernières années, les disques SSD sont progressivement apparus au public et sont largement utilisés dans les ordinateurs personnels, les serveurs et d'autres domaines. En comparaison, les disques durs mécaniques (HDD), comme les périphériques de stockage traditionnels, présentent également des avantages en termes de fiabilité et de rentabilité. Cet article procédera à une analyse comparative des avantages et des inconvénients des disques SSD et des disques durs mécaniques pour aider les lecteurs à mieux choisir un périphérique de stockage adapté à leurs besoins. Tout d’abord, les disques SSD présentent des avantages évidents en termes de vitesses de lecture et d’écriture. Étant donné que le SSD utilise un support de stockage flash, il offre des vitesses de lecture et d'écriture plus rapides.

See all articles