recherche

Maison  >  Questions et réponses  >  le corps du texte

php - question sur la méthode de requête MySQL

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~

PHPzPHPz2797 Il y a quelques jours670

répondre à tous(1)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-31 10:36:41

    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

    répondre
    0
  • Annulerrépondre