PHP – Frage zur MySQL-Abfragemethode
PHPz
PHPz 2017-05-31 10:34:41
0
1
641

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~

enthalten

Zum 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~

PHPz
PHPz

学习是最好的投资!

Antworte allen(1)
仅有的幸福

可以考虑给字段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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage