Je construis une base de données assez grande où j'aurai beaucoup de tables avec diverses données.Bulding moteur de recherche pour grande base de données
Mais chaque table possède des champs similaires, par exemple un titre vidéo ou un titre de plage. Maintenant, le problème que je suis confronté est de savoir comment créer une requête qui chercherait une correspondance de mots clés sur cinq tables ou plus, gardez à l'esprit que chaque table peut potentiellement avoir de 100k à 1million de lignes ou dans certains cas, même en couple millions de lignes. Je pense que l'utilisation de jointures ou de requêtes séparées pour chaque table serait très lente, alors j'ai pensé à créer une table séparée où stocker les données de recherche.
Par exemple, je pense qu'il pourrait avoir des domaines comme ceux-ci,
id ---- username ---- title ---- body ---- date ---- belongs_to ---- post_id
De cette façon, je pense qu'il serait beaucoup plus rapide effectuer des recherches, ou suis-je tout à fait tort? Le seul problème avec cette approche que je peux penser est qu'il serait difficile de gérer cette table parce que si l'enregistrement original de certaines des tables est supprimé, je devrais aussi supprimer l'enregistrement de la table 'search' comme bien.
ça va être moche, et difficile à maintenir. Si vous suivez cette route, une requête distincte sur chaque table serait le chemin à parcourir. Si ces requêtes retournent les mêmes colonnes (ou vous pouvez le faire en introduisant des espaces réservés littéraux dans certaines des requêtes, de sorte que les colonnes de retour soient toutes "alignées", ces requêtes séparées peuvent être combinées en utilisant les ' UNION ALL' opérateur.Il existe de meilleures alternatives à MySQL pour faire des "recherches rapides par mot clé". – spencer7593
"Si vous optez pour cette route, une requête distincte sur chaque table serait le chemin à suivre Si ces requêtes retournent les mêmes colonnes (ou vous pouvez le faire en introduisant des espaces réservés littéraux dans certaines des requêtes, donc que les colonnes de retour soient toutes "alignées", alors ces requêtes séparées pourraient être combinées en utilisant l'opérateur UNION ALL "qui sera difficile à maintenir .. il gâchera les performances de MySQL si vous indexez correctement la base de données ne devrait pas avoir de problème avec cette données et vous devriez avoir une bonne normalisation de la table –