问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

二十万数据,如何查询?

发布网友 发布时间:2023-05-11 01:41

我来回答

5个回答

热心网友 时间:2023-10-09 00:14

老弟,说句实话不想回答你,分少点。
-----------------------------------------------
第一:脱机浏览器数据库
你可以参照中国民航售票的做法,人家的那个点比你这个少。
例如:他们把数据放入了js 文件,加载的时候js就相当于文本数据库,当然也有人用sqllite做为脱机数据库,在脱机数据库方面可以深入。
先说js
他们 有这样的数据 {[北京西直门][北京-全国]}----这个文件密密麻麻放入20万的key-value的数据估计要在1M上下,使用雅虎工具压缩估计可以整到400K左右,可能更小。
-----------------------------------------------------------------------------------------------------------------------
第二:数据库实时方案
这个你可以使用异步请求,但是数据库可以开启大缓存,将表的数据最大化的放入内存。国内有内存数据库方面的权威,比如南大科技的数据库,中国南天的数据库都有内存数据库的方案。
你也可以使用oracle给你提供的内存数据库方案,都不差。
-----------------------------------------------------------------------------------------------------------------------
第三:程序缓存
这个比较实际,把表数据缓存起来,读写缓存就可以了,不用建立数据库连接,缓存一天过期一次。
--------------------------------------------------------------------------------------------------------------------
第四:程序适当放入规定,你也没必要完全模仿百度吧!换个心眼什么都解决了。
---------------------------------------------------------------------------------------------------------------------
第五:表结构的设计,使用稍微严谨的方案就可以了,
-------------------------------------------------------------------------------------------------------------------
总结:你这种东西想通过表结构设计或是查询来优化的空间有限,你如果实在想用实实在在的数据库也没有人阻拦你!
看如下一些人用的拼音码方案的部分代码:

Public Function PinYin(Tstr As String) As Long
Dim I As Long

I = Asc(Tstr)

If I >= Asc("啊") And I < Asc("芭") Then PinYin = 1

If I >= Asc("芭") And I < Asc("擦") Then PinYin = 2

If I >= Asc("擦") And I < Asc("搭") Then PinYin = 3

If I >= Asc("搭") And I < Asc("蛾") Then PinYin = 4

If I >= Asc("蛾") And I < Asc("发") Then PinYin = 5

If I >= Asc("发") And I < Asc("噶") Then PinYin = 6

If I >= Asc("噶") And I < Asc("哈") Then PinYin = 7

If I >= Asc("哈") And I < Asc("击") Then PinYin = 8

If I >= Asc("击") And I < Asc("喀") Then PinYin = 9

If I >= Asc("喀") And I < Asc("垃") Then PinYin = 10

If I >= Asc("垃") And I < Asc("妈") Then PinYin = 11

If I >= Asc("妈") And I < Asc("拿") Then PinYin = 12

If I >= Asc("拿") And I < Asc("哦") Then PinYin = 13

If I >= Asc("哦") And I < Asc("啪") Then PinYin = 14

If I >= Asc("啪") And I < Asc("欺") Then PinYin = 15

If I >= Asc("欺") And I < Asc("然") Then PinYin = 16

If I >= Asc("然") And I < Asc("撒") Then PinYin = 17

If I >= Asc("撒") And I < Asc("塌") Then PinYin = 18

If I >= Asc("塌") And I < Asc("挖") Then PinYin = 19

If I >= Asc("挖") And I < Asc("昔") Then PinYin = 20

If I >= Asc("昔") And I < Asc("压") Then PinYin = 21

If I >= Asc("压") And I < Asc("匝") Then PinYin = 22

If I >= Asc("匝") And I <= Asc("座") Then PinYin = 23

End Function
-------------------------------------------------------------------------
类型界定的方式必然可以缩小范围,这个也是一个策略。

热心网友 时间:2023-10-09 00:14

放在一张表中 我感觉如果没有大字段(也就是有占很多的空间的字段 如:Ntext型的)的话 应该没有问题 。 主要是在程序设计的时候要好好控制: 我的控制方法如下

在你加载这个页面的时候 你把所有的数据一次给查出来 放在本地(异步加载。可能第一次慢一点), 等你查询的时候 就直接匹配你本地的数据集合,不去访问数据库,这样能减少数据交互的时间了,就会很快的

热心网友 时间:2023-10-09 00:15

方案一.
单独设置一个 关键字表
20万的 站的信息, 应该有不少重复的.
关键字表 只有 1列 , 就是 站台名.
假如最后这个关键字表数量 不是很大, 那么可以考虑 缓存到服务器内存当中.

方案二.
假如 合并重复站名以后, 数据量还是很大.
那么
如果一个站台名称5个字,输入第一个字的时候,从20万条记录中模糊匹配一次
后面4个字,可以在客户端处理掉。

方案三.
修改查询算法
设置一个 已查询 缓存
例如, 当第一个用户输入 "人" "人民" "人民广" "人民广场" 都会有相应的结果
服务器上,缓存这 "人" "人民" "人民广" "人民广场" 的缓存信息
当第二个用户 输入 "人" "人民" "人民路" 的时候, 前2次的 查询结果, 缓存在结果列表中,不需要重新检索数据库
这个 “已查询 缓存” 需要有个 最大缓存条数, 以及一个 先进先出的算法。

注:
20万数据, 站名索引是必须的。
模糊匹配 尽可能避免 LIKE '%输入的字符%', 尽可能使用 LIKE '输入的字符%'

热心网友 时间:2023-10-09 00:15

20万条数据,你一定要有一个城市id的表,将20万个数据分别划分给每个城市,当有用户使用时,你先要让选择城市,这样就会将数据减到很少一部分,如果需要跨城市,就设置个区间,开始城市,目标城市.我觉得这样会快很多,只要带宽够.几百人操作不成问题

热心网友 时间:2023-10-09 00:16

我做过类似的,用拼音,可大大提高速度。你可以上网找找,获得一个汉字的拼音拼法,很多的。输入第一个字,就可以利用首字母缩小范围,输入第二个字在上面的基础上再利用首字母缩小范围...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“晚来天欲雪,能饮一杯无?”是什么意思_出处及原文翻译_学习力 胸肌中部怎么练 血沉高是怎么回事,怎样才能降低啊! 中海锦江城多久交房 “QMS”作为“质量管理体系”的英文缩写,其背后理论及应用如何?_百度... 我用QQ登的快手绑定了一个电话号码,电话号码不用了,现在怎么能登得进去... 桂林银行白金客户条件 桂林银行最高等级卡 iQOO 11系列曝光,预计年底正式发布! vivo X90先别买?iQOO 11系列配置堪称豪华 王者荣耀:上单送一血和送一塔,哪个最不受队友们待见 王者荣耀送塔能掉赏金吗 王者荣耀多久送塔算塔杀 恶意送塔是什么意思 松下洗衣机触摸屏失灵受潮 lg洗衣机触摸面板被腐蚀 国际快递费用的算法 电缆的火灾有哪些危险性? 电缆所涉及的主要燃烧有哪些? 亲人去世的噩耗该怎么办? 我好友去世的噩耗传来这么写对吗? 传达噩耗的说话技巧有哪些? 形容突然听到关于亲人的坏消息 这个坏消息应该用个什么词说 反正“噩耗”不行 噩耗指人死亡的消息 噩耗[è hào]什么意思?近义词和反义词是什么?英文翻译是什么? 噩耗是什么举一个生活例子说说什么是噩耗 怎么理解 大自然的语言 这样看来,鸟语花香,草长莺飞,都是大自然的语言 宫颈肥大和腺体囊肿的关系? 公司口头通知解除劳动协议,该怎么办 口头上可以解除合同吗 积极心态者的表现有哪些? 乞丐房是什么意思 投下的意思 浪费人生太难受是什么意思 别人感慨后浪太强了应该怎样回答? 有宫颈息肉能不能喝酒 沈阳回锦州最新政策 31日能从沈阳和平区回锦州吗 沈阳高速到锦州,回义县还用报备吗? 辽宁锦州防疫政策 锦州去沈阳防疫政策 11月14日锦州去沈阳隔离吗 从沈阳回锦州需要隔离吗 现在沈阳到锦州需要隔离吗 锦州到沈阳疫情政策 岭五笔怎么打的 青山挡不住,毕竟东流去。是预言吗? 句容市银河之都东苑总建筑面积 句容银河之都东苑的学区是哪里 抖音怎么刷到下一个视频 港澳酒店/宾馆确认入住时间为 14:00,退房时间为 12:00什么意思