2010-11-17 4 views
0

est l'opérateur IN bon pour passer, disons 5000+ articles dans une grande table qui est correctement indexée? Essentiellement, j'essaie d'obtenir une liste de Mp3 et de vérifier si la chanson existe dans notre système en faisant une simple recherche de nom.Grand Table Dans l'opérateur MySql

(pseudo-code) nom Sélectionnez à partir mp3s IN (tableau de noms mp3)

Répondre

3

est rapide

expr IN (value,...)

Retourne 1 si expr est égal à l'une des valeurs dans IN list, else renvoie 0. Si toutes les valeurs sont des constantes, elles sont évaluées en fonction du type de expr et triées. La recherche de l'élément est ensuite effectuée en utilisant une recherche binaire. Cela signifie que IN est très rapide si la liste de valeurs IN est entièrement constituée de constantes. Dans le cas contraire, la conversion de type s'effectue conformément aux règles décrites à la Section 11.2, «Conversion de type dans l'évaluation d'expression», mais appliquée à tous les arguments.

se réfèrent: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in se réfèrent: http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

Pour votre cas, vérifiez votre max_allowed_packet pour répondre aux énormes chaîne