我想了解当我想要查找多个列时,用php构造查询字符串的最佳方法是什么。
例如,数据库有id,name,email,date。
我在页面上有一个搜索输入字段,在提交时,我希望它根据上面提到的列的输入字段进行搜索。最好的方法/做法是什么?
到目前为止,我有以下内容,但似乎这是一个“愚蠢”的搜索。
"SELECT * FROM Table WHERE id LIKE '$search%' || name LIKE '$search%' || email LIKE '$search%' || date LIKE '$search%'";
这种作品很好但我觉得必须有更好的方法和更合适的智能方法。
...谢谢
答案 0 :(得分:1)
当您查询多个列而不使用AND(您正在使用OR)时,无法使mysql正确使用索引
总是需要优化您的查询策略,总是人们认为数据很小,
为什么要花费精力去优化...但事实是你不知道你的数据何时会增长
对于您的查询,如果您想坚持LIKE,
那么你需要在4列上构建4个索引,
alter table Table add index on(id);
alter table Table add index on(name);
alter table Table add index on(email);
alter table Table add index on(date);
并将查询更改为: -
SELECT * FROM Table WHERE id LIKE '$search%'
union distinct
SELECT * FROM Table where name LIKE '$search%'
union distinct
SELECT * FROM Table where email LIKE '$search%'
union distinct
SELECT * FROM Table where date LIKE '$search%'
偏离话题: -
答案 1 :(得分:0)