php - soalan kaedah pertanyaan mysql
PHPz
PHPz 2017-05-31 10:34:41
0
1
656

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~

PHPz
PHPz

学习是最好的投资!

membalas semua(1)
仅有的幸福

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan