关于mySQL, 这样的搜索如何实现 大家好, 最近在用mySQL, 现在能用它的C API 把数据放到数据库里面了. 有个问题是, 比如数据库的table有L1, L2, L3 这么几栏. 假设给定3个数, 比如x, y, z, 我想从数据库里面找出满足使得 (x-L1)^2+ (y-L2)^2+ (z-L3)^2最小的那组L1, L2, L3. 应该怎么实现呢? 谢谢大家了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select *from table1order by (x-L1)^2+ (y-L2)^2+ (z-L3)^2 limit 1 select *from table1order by (x-L1)*(x-L1)+ (y-L2)*(y-L2)+ (z-L3)*(z-L3)limit 1 这个问题貌似和我的http://topic.csdn.net/u/20110504/12/eddecac3-9e3a-4ac0-8739-2e8f4d4923ee.html类似就是查找一个多维度里最邻近的点,你这个是三维空间数据量大的话,LS这些方式效率肯定不行啊。 楼上说的也确实是我关心的问题啊, 如果数据有几百万,这样search速度快吗? 我刚才试了99990个数据,每个数据是10维的,发现查找的速度似乎还是不错啊(0.58sec)只是现在insert太慢了,我是一条语句,一条语句insert的。还需要继续学习 不快,因为MYSQL必须对所有的这几百万记录都做一遍 (x-L1)^2+ (y-L2)^2+ (z-L3)^2 ,并进行排序之后才能得到结果。 这么说,你写的语句里面那个 limit 1 就是说输出排序后的最小的那组?还有一个问题是,如果我需要在一定范围内找最佳值呢?比如数据库的table除了有L1, L2, L3 这么几栏. 还有x1, x2, y1, y2,现在从数据库里面找出满足使得 (x-L1)^2+ (y-L2)^2+ (z-L3)^2最小的那组L1, L2, L3. 并且x1, x2, y1, y2要在一定范围内, 比如 1<x1<2, 0.5 < x2, 0.1< y1 < 3, y2<1.5那怎么弄呢? 谢谢了 为什么查询出了多余而且数据库没有的记录 关于数据库的设计 关于SQL执行时间的问题 mysql主从复制的问题 谁有一个好用的sqlyog,传一个,谢谢了! MySQL5如果配置数据库文件存放位置路径(Linux下) mysql 初学者 MySQL真是免费的吗? 用c API 编程,对一个数据库操作时,用在mysql_real_query()中使用“USE”吗?-- 阿菜 求助! navicat点击优化表之后,该表相关查询就卡死了。 数据库查询语句求助! 可以使用drop user命令删除user表中的user字段为空的那条记录吗?
from table1
order by (x-L1)^2+ (y-L2)^2+ (z-L3)^2
limit 1
from table1
order by (x-L1)*(x-L1)+ (y-L2)*(y-L2)+ (z-L3)*(z-L3)
limit 1
就是查找一个多维度里最邻近的点,你这个是三维空间
数据量大的话,LS这些方式效率肯定不行啊。
那怎么弄呢? 谢谢了