日期:2014-05-18  浏览次数:20788 次

在宇宙里面寻找 一座城市 对象

图中给出的是整个树结构的一部分


现在我要找“无锡”这个对象

给出的 条件是 type=城市 ,name="无锡"


如果就给出这两个条件,那
(1)我并不知道 无锡是江苏的?
(2)我也不知道 江苏是中国的?
(3)我也不知道 中国是亚洲的?
(4)我也不知道 亚洲是东半球的?
(5)我也不知道 东半球就是地球的?

那么如果我的数据库存储的是 整个宇宙的所有城市?

那我怎么才能直接找到 无锡 这个对象的所有属性(假设无锡的 其他属性有:地点,坐标等等,人口,历史,经济,政治等)


数据是使用树结构存储的


但是 就像我上面所提出的问题一样 地球 东半球 亚洲 中国 江苏 这些 我都不知道!
难道 我要遍历宇宙里面所有的城市吗?(如果这样的话那岂不是就失去了分类树结构存储的意义了,分类存储就是希望快速定位查找结果,减少遍历开销)




------解决方案--------------------
奇怪了,
你数据库里如果没有世界各国行政区划的数据,
你查找什么呢?
你拿什么来查找?
你构建这个什么毛的存储结构干毛用呢?
------解决方案--------------------
分类存储就是希望快速定位查找结果,减少遍历开销.

注意这句话.

前提是分类.存储.

你知道某一个分类.遍历这分类就可以了.这就是减少遍历开销
------解决方案--------------------
探讨

奇怪了,
你数据库里如果没有世界各国行政区划的数据,
你查找什么呢?
你拿什么来查找?
你构建这个什么毛的存储结构干毛用呢?

------解决方案--------------------
做人不能太cctv.

你跟电脑说.给我找出这个人来.
电脑当然是满世界找啦.

你跟电脑说,给我去学校找出这个人来.
电脑就懂了,只去学校找就可以.这就是减少遍历开销
------解决方案--------------------
type=城市 ,name="无锡"

说明国家和省份是不会存在 叫无锡的.

电脑会只历遍城市这一层节点.
------解决方案--------------------
笑而不语真君子
------解决方案--------------------
给出的 条件是 type=城市 ,name="无锡"

select * from [城市表] where [城市名] like '%无锡%'
------解决方案--------------------
1.知道啥要索引吗?
2.知道啥叫都柏林元数据描述吗


如果你知道柏林元数据那么请不要自己构建,我们大家应该使用标准元数据描述,而非自己构建

如果不知道柏林元数据标准,那么请自建索引文件去索引。索引的标准有无数种,lz把自己限到一个固定框框里面了,比如我可以按ABCD索引,我也可以按长度索引
------解决方案--------------------
探讨
这是数据库的底层实现问题,不是查询数据库问题...

------解决方案--------------------
探讨

那 这么说
当我们在GoogleMap 输入 Manhattan(曼哈顿的英文) 的时候
google 也是 在全世界所有的城市的所有区 中查找 Manhattan 不成?


中国的所有城市 就有 数百个全世界至少也有数千个吧?
一个城市 又有N个区
如果在所有的区中 搜索 那GoogleMap 居然能 迅速定位 这是何故

(当然你也可以输入 南长区(无锡的) 浦东区……

------解决方案--------------------
在地图里搜无锡..肯定返回的不只是一个无锡.全世界会有很多个无锡.
有大城市叫无锡. 有个偏远小村也叫无锡.
那么会优先返回热门的大城市无锡地图点.

不但要历遍.而且要多层判断哪个是客户想要的.
------解决方案--------------------
看看IP是哪个地方的:) 然后就近搜索
------解决方案--------------------
楼主这个问题很有异意,GoogleMap 怎么弄的咱不是很了解,但是你说要搜索的一个城市,城市名叫无锡,那么咱先不管宇宙这么大的地方,就打比方中国,假如中国有很多个城市的名字都叫无锡,然后这些城市都散落在不同的省份,那么你这样搜索,难道数据库不需要搜遍整个数据库?快速定位至少应该要有个定位元素,如果你连这个定位元素都属于最底层,那还怎么快速定位呢?是不?
------解决方案--------------------
这么复杂的问题,还是从基础做起吧