php - question sur la méthode de requête MySQL
PHPz
PHPz 2017-05-31 10:34:41
0
1
620

Champ "A" dans le tableau de données existant T, la valeur de A est généralement sous la forme : "12,123,312,1212". Il y a 100 000 éléments de données dans T.

Besoin d'interroger les enregistrements contenant un seul "12" en A~

Par exemple :
"123,125,1212,1234,312" ne contient pas un seul "12", ne pas
"1,18,123,1212,321,312" ne contient pas un seul "12", ne pas
"1, 12,123,1212,321,312" contient un seul "12" pour
...

J'ai 2 méthodes de requête, ce qui semble un peu fastidieux~ L'une est CONCAT et l'autre est LIKE OR

Demandez si quelqu'un a une méthode plus efficace, merci~

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
仅有的幸福

Vous pouvez envisager d'ajouter un index de texte intégral au champ A et d'utiliser la recherche en texte intégral :

ALTER TABLE `T` ADD FULLTEXT (`A`);

SELECT `id` FROM `T` 
WHERE MATCH(`A`) AGAINST('12' IN BOOLEAN MODE) 
ORDER BY `id` DESC LIMIT 10 OFFSET 0;

Il est à noter que :
La valeur par défaut de innodb_ft_min_token_size de MySQL5.6.4 est 3.
La valeur par défaut de ft_min_word_len de MyISAM est 4.
Si la longueur minimale du l'index que vous voulez est 2 , puis configurez-le dans my.cnf :
innodb_ft_min_token_size=2
ft_min_word_len=2

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!