Heim > Fragen und Antworten > Hauptteil
Feld „A“ in der vorhandenen Datentabelle T, der Wert von A hat normalerweise die Form: „12.123.312.1212“. Es gibt 100.000 Daten in T.
Es müssen die Datensätze abgefragt werden, die eine einzelne „12“ in A~
enthaltenZum Beispiel:
„123,125,1212,1234,312“ enthält keine einzelne „12“, nicht
“1,18,123,1212,321,312“ enthält keine einzelne „12“, nicht
“1, 12.123.1212.321.312 " enthält eine einzelne „12“ bis
...
Ich habe zwei Abfragemethoden, was etwas umständlich erscheint ~ Eine ist CONCAT und die andere ist LIKE OR
Fragen Sie, ob jemand eine effizientere Methode hat, danke~
仅有的幸福2017-05-31 10:36:41
可以考虑给字段A添加全文索引,使用进行全文检索:
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;
需要注意的是:
MySQL5.6.4的 innodb_ft_min_token_size 的默认值为3.
MyISAM的 ft_min_word_len 的默认值为4.
如果你要索引的最小长度是2,那就要在my.cnf配置:
innodb_ft_min_token_size=2
ft_min_word_len=2