Je dois vérifier si une valeur entière est déjà dans ma base de données (qui ne cesse de croître). Et cela devrait être fait plusieurs milliers de fois dans un script. Je considère deux alternatives:PHP in_array vs MySQL SELECT
- Lisez tous ces nombres de base de données MySQL dans le tableau PHP et chaque fois que j'ai besoin de le vérifier, utilisez la fonction in_array.
- Chaque fois que je dois vérifier le numéro, il suffit d'exécuter quelque chose comme numéro SELECT de table où le nombre = LIMIT « # » 1
D'une part, la recherche dans le tableau qui est stocké dans la RAM devrait être plus rapide que d'interroger mysql à chaque fois (comme je l'ai mentionné, ces vérifications sont effectuées environ un millier de fois lors de l'exécution d'un script). D'un autre côté, DB est en train de grandir, et ce réseau peut devenir très grand et cela peut ralentir les choses. La question est: quelle est la méthode la plus rapide ou la meilleure pour d'autres aspects?
sont construits pour être interrogés et recherchés, et parfois ils sont également en mémoire cache. Les fonctions de tableau de PHP sont bonnes pour la recherche, mais elles ne correspondent pas à un moteur de base de données compilé. –
Vous avez une limite de mémoire, donc tout mettre dans un tableau peut ne pas offrir une solution du tout. La mise en cache est la seule solution si vous parlez de grandes bases de données, mais vous devez d'abord définir la durée de fraîcheur acceptable des données. – stillstanding
Quelle est la taille de cette table de base de données? 10 rangs? 1000 lignes? 1,000,000 lignes? 1,000,000,000 lignes? (La réponse à cela fera une énorme différence dans la stratégie optimale) ... Aussi, pouvez-vous "lot" ces numéros (donc au lieu de faire 3000 requêtes, seulement 30 avec chaque recherche de 100 numéros)? – ircmaxell