【发布时间】:2017-04-18 08:59:25
【问题描述】:
下面是名为list的表:
Column Name Data Type
id (Int)
user_one (String)
user_two (String)
我想扫描user_one 和user_two column 中的用户。
作为回报,我想取回前 100 条记录和一个表明还有更多记录的标志。
解决方案 #1:
ALTER TABLE list ADD FULLTEXT KEY `full_name` (`user_one`,`user_two`);
SELECT * FROM list WHERE MATCH(user_one, user_two) AGAINST ('john');
我相信解决方案 1 的性能会更好,但我不确定如何添加 100 的 limit 并获得 flag。
解决方案 #2:
SELECT * FROM list
WHERE "john" LIKE Concat(Concat('%',user_one),'%')
OR "john" LIKE Concat(Concat('%',user_two),'%')
ORDER BY id
LIMIT 50
我认为解决方案 #2 比较慢,如果记录超过 100 条,我不知道添加 flag 的最佳方法是什么。
最后,如果可能的话,我想尽量减少整个表扫描。
【问题讨论】:
标签: mysql sql database-design pagination relational-database