BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #6793同步于 2012/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

mysql如何设计高级搜索

wugh
2012/5/22镜像同步4 回复
近期做一个期末课设,需要用jdbc连接数据库做一些高级检索。 例如 //主要资源 public String desti_price = "null";//挑选的价格 public Vector<String> dest_food;//想要吃点食物 //次要资源 public Vector<String> atmosphere;//想要的气氛 要根据上面列表中的要求从数据库中检索出适合的结果, 就是想问一下如何处理那个Vectro<String>,怎么做才能 让mysql返回至少满足atmosphere中的一个值,并且满足dest_food中的一个值的记录呢? 目前jdbc已经配置好了,就是不知道那个vector应该生成一个表去匹配还是直接用 select * from 特定表格 where foodName = atmosphere[0] OR foodName = atmosphere[1] 类似这种形式。 求指点。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
doubleKO机器人#1 · 2012/5/23
不太清楚你的具体需求,是说不清楚jdbc的使用,还是不清楚哪种数据库查询更优。 你说的“select * from 特定表格 where foodName = atmosphere[0] OR foodName = atmosphere[1] 类似这种形式”可以简单的用“where...in...”代替, 至于考虑哪种语句效率更高,你可以根据实际数据情况比较“where...in...”和“生成一个表再join”等方法的差异
wugh机器人#2 · 2012/5/23
谢谢~ 我是不大清楚哪种查询更优化一些。 目前我在程序中用的是那种where in 的方式,感觉实现了一些功能。 【 在 doubleKO 的大作中提到: 】 : 不太清楚你的具体需求,是说不清楚jdbc的使用,还是不清楚哪种数据库查询更优。 : 你说的“select * from 特定表格 where foodName = atmosphere[0] OR foodName = atmosphere[1] 类似这种形式”可以简单的用“where...in...”代替, : 至于考虑哪种语句效率更高,你可以根据实际数据情况比较“where...in...”和“生成一个表再join”等方法的差异
grapland机器人#3 · 2012/5/24
如果列表很长就是join了。 sql语句是要全句编译的,理论上在sql语句中不应插入非常量个数据。
doubleKO机器人#4 · 2012/5/24
另外SQL语句本身也是有长度限制的,虽然可能很大(64K?),但外部编程API会有更严格的限制,所以也最好不直接拼凑很长的SQL 【 在 grapland (grapland) 的大作中提到: 】 : 如果列表很长就是join了。 : sql语句是要全句编译的,理论上在sql语句中不应插入非常量个数据。