[RUBY] [Commentaire approximatif] Je veux épouser la méthode du pluck

C'est soudain…

① Imaginez un «collègue qui peut travailler énormément» près de chez vous. ② Votre "femme". Ou pensez à une "femme idéale (homme)".

Une méthode qui fusionne les deux. Je peux travailler énormément, mais joyeux et doux. C'est la "méthode pluck" introduite cette fois.

(... je suis désolé, je vais le faire sérieusement)

Aperçu

Cet article

  1. Quel type de méthode est plumer?
  2. Quand peut-on utiliser la pince?

Je vais vous expliquer. (* Cet article est inutile pour ceux qui maîtrisent déjà la méthode de pincement.)

Quel genre de méthode est plumer?

En conclusion, __ "récupère la valeur d'une colonne dans un tableau" méthode __.

Prenons un tableau comme exemple.

table des utilisateurs (id, nom, âge)

id name age
1 ken 21
2 takuya 22
3 masato 29
4 kouta 24
5 hirokatsu 23
6 yuuhei 28
7 takumi 25
8 akihito 26

Par exemple, si vous avez une table comme celle-ci, vous pouvez utiliser la méthode pluck.

users_controller.rb


@users = User.pluck(:id)

#Résultat de sortie ci-dessous
@users = [1, 2, 3, 4, 5, 6, 7, 8]

De cette manière, en définissant __model name.pluck (nom de colonne) __, le contenu de cette colonne pourrait être obtenu sous forme de tableau.

Vous pouvez également spécifier un deuxième argument ...

users_controller.rb


@users = User.pluck(:id, :name) #Spécifiez le nom comme deuxième argument

#Résultat de sortie ci-dessous
@users = [ [1, "ken"],[2, "takuya"],[3, "masato"],[4, "kouta"],
[5, "hirokatsu"],[6, "yuuhei"],[7, "takumi"],[8, "akihito"] ]

Il est également possible de passer plusieurs arguments de cette manière et de les obtenir sous forme de tableau. Même si vous passez les 3ème et 4ème arguments, vous obtiendrez la même chose qu'un tableau.

Au fait, puisqu'il s'agit d'un tableau, la méthode d'acquisition est légèrement différente,

users_controller.rb


@users = User.pluck(:id, :name) #Spécifiez le nom comme deuxième argument


@users[0][1] = "ken" #Premier tableau[1,"ken"]Parce que c'est le deuxième élément de"ken"Avoir
@users[3][0] = 1  #4ème tableau[4,"kouta"]Obtenez 1 car c'est le premier élément de

Vous pouvez obtenir le contenu comme celui-ci.

Ce que vous pouvez faire avec la méthode pluck

Alors, que pouvez-vous faire avec la méthode pluck?

Vous pouvez vérifier si un enregistrement spécifique existe dans une colonne

Par exemple, si vous souhaitez savoir s'il existe des données datant de 24 ans dans le modèle utilisateur,

users_controller.rb


User.where(age: 24).exists?
# => true

Vous pouvez l'obtenir en faisant ce qui précède, mais si vous utilisez la méthode pluck

users_controller.rb


User.pluck(:age).include?(24)
# => true

Vous pouvez l'obtenir avec une expression comme celle-ci. __ "... Non, lequel est bien?" __, mais pour ces deux, j'utilise du pincement. J'expliquerai la raison ensuite.

La vitesse d'acquisition des données est améliorée

À première vue, les résultats des deux formules ci-dessus se ressemblent. Cependant, le traitement en cours et le nombre de données acquises sont complètement différents.

users_controller.rb


User.where(age: 24).exists?

↓ Voici la requête (instruction pour SQL) émise à ce moment ↓

MySQL


User Exists? (0.6ms)  SELECT 1 AS one FROM `users` WHERE `users`.`age` = 24 LIMIT 1
=> true

Alors, que se passe-t-il lorsque vous utilisez la méthode pluck?

users_controller.rb


User.pluck(:age).include?(24)

↓ Cliquez ici pour la requête émise (commande à SQL) ↓

MySQL


(0.5ms)  SELECT `users`.`age` FROM `users`
=> true

Voyez-vous que c'est évidemment court? Le temps de traitement est également différent de 0,1 milliseconde.

Dans le premier cas, nous recherchons "s'il y a un utilisateur de 24 ans", alors que Ce dernier cherche à savoir "s'il existe des données pour 24 ans sur l'âge de l'utilisateur".

En d'autres termes, en utilisant pluck __ Vous ne pouvez obtenir que les colonnes dont vous avez besoin, ce qui signifie que votre requête sera plus courte et plus rapide __.

Plus vous avez de données, plus la différence de vitesse de traitement est grande. Pour ceux qui disent: "J'ai fait un portfolio, mais le traitement est un peu lent ...", pourquoi ne pas revoir la description de l'acquisition de données?

Sommaire

① La méthode pluck est la méthode __ "obtenir la valeur d'une certaine colonne dans un tableau" __ (2) En utilisant pluck, dans certains cas, l'émission de requêtes inutiles est supprimée et __ la vitesse de traitement est améliorée __

J'espère que vous pouvez comprendre la bonté de la méthode de pincement, même un peu ... Merci d'avoir regardé jusqu'à la fin.

Recommended Posts

[Commentaire approximatif] Je veux épouser la méthode du pluck
J'ai essayé d'expliquer la méthode
Je veux appeler une méthode et compter le nombre
Je souhaite utiliser la méthode de désinfection autre que View.
Je voulais ajouter @VisibleForTesting à la méthode
J'étais accro à la méthode du rouleau
Je veux passer l'argument d'Annotation et l'argument de la méthode d'appel à aspect
[Ruby] Je veux faire un saut de méthode!
Je veux var_dump le contenu de l'intention
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Je veux tronquer après la virgule décimale
Je veux obtenir la valeur en Ruby
Je veux appeler une méthode d'une autre classe
[Java] Je souhaite calculer la différence par rapport à la date
Je veux intégrer n'importe quel TraceId dans le journal
Je veux juger la gamme en utilisant le diplôme mensuel
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
Je souhaite utiliser le mode sombre avec l'application SWT
Je veux retourner la position de défilement de UITableView!
Je souhaite simplifier la sortie du journal sur Android
Je souhaite ajouter une fonction de suppression à la fonction de commentaire
Quelle est la méthode pluck?
Je veux convertir des caractères ...
[Débutant] Je souhaite modifier le fichier de migration-Comment utiliser la restauration-
[Rails] [bootstrap] Je souhaite modifier la taille de la police de manière réactive
(´-`) .. oO (Je veux trouver facilement la sortie standard" Hello ".
Je veux amener Tomcat sur le serveur et démarrer l'application
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Je veux mettre le JDK sur mon PC Mac
Je veux donner un nom de classe à l'attribut select
Je souhaite rechercher de manière récursive la liste des classes sous le package
Je souhaite passer au même écran dans l'état enregistré
Je souhaite renvoyer plusieurs valeurs de retour pour l'argument saisi
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Je veux passer la commande de démarrage à postgres avec docker-compose.
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
Comment utiliser la méthode link_to
Je souhaite accorder des autorisations de modification et de suppression uniquement à l'affiche
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
Je veux comprendre le flux des paramètres de demande de traitement Spring
Je veux revenir à l'écran précédent avec kotlin et java!
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
[Eclipse] Je souhaite ouvrir le même fichier deux fois [Éditeur fractionné]
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
L'histoire que je voulais développer Zip
Je veux limiter l'entrée en réduisant la plage de nombres