cari

Rumah  >  Soal Jawab  >  teks badan

php - soalan kaedah pertanyaan mysql

Medan "A" dalam jadual data T sedia ada, nilai A biasanya dalam bentuk: "12,123,312,1212". Terdapat 100,000 keping data dalam T.

Perlu menanyakan rekod yang mengandungi satu "12" dalam A~

Contohnya:
"123,125,1212,1234,312" tidak mengandungi satu "12", jangan
"1,18,123,1212,321,312" tidak mengandungi satu pun "12", jangan
"1, 12,123,1212,321,312 " mengandungi satu "12" hingga
...

Saya ada 2 kaedah pertanyaan, yang nampaknya agak menyusahkan~ Satu CONCAT dan satu lagi LIKE OR

Tanya sesiapa ada kaedah yang lebih efisyen, terima kasih~

PHPzPHPz2724 hari yang lalu627

membalas semua(1)saya akan balas

  • 仅有的幸福

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

    Anda boleh mempertimbangkan untuk menambah indeks teks penuh pada medan A dan gunakan carian teks penuh:

    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;

    Perlu diingatkan bahawa:
    Nilai lalai innodb_ft_min_token_size MySQL5.6.4 ialah 3.
    Nilai lalai ft_min_word_len MyISAM ialah 4.
    Jika panjang minimum indeks yang anda inginkan ialah 2, kemudian konfigurasikannya dalam my. cnf:
    innodb_ft_min_token_size =2
    ft_min_word_len=2

    balas
    0
  • Batalbalas