简介 现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等基于位置的交互,那这样的功能是怎么实现的呢?本文提供的实现方式,适用于所有数据库。 实现 为了方便下面说明,先给出一个初始表结构,我使用的是MySQL: 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 ...
分类:
编程语言 时间:
2016-12-29 16:18:12
阅读次数:
441
Atitit 如何利用先有索引项进行查询性能优化 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种:1 1.2. 范围查找 动态索引查找1 1.2.1. 索引联合 所谓的索引联合,就是根据就是根据筛选条件的不同,拆分成不同的条件,去匹配不同的索引项。2 1.3. 索引交叉2 ...
分类:
其他好文 时间:
2016-12-07 23:42:29
阅读次数:
198
二分法查找: 『在有序数组的基础上通过折半方法不断缩小查找范围,直至命中或者查询失败。』 二分法的存储要求:要求顺序存储,以便于根据下标随机访问 二分法的时间效率:O(Log(n)) 二分法的空间效率:原地查询 O(1) 二分法对应的搜索树是确定的。 二叉排序树查找: 『借助二叉排序树进行搜索,但因 ...
分类:
编程语言 时间:
2016-11-27 23:04:08
阅读次数:
226
1、 顺序查找:直接挨个挨个从A找到Z 找到想联系的人; 折半查找:根据你要查找的人的姓名首字母来排除一半的人,直接在它所在的另一半的范围 查找; 索引查找:直接根据你搜出你想要查找的联系人姓名,方可找到; 我认为折半查找的方案更优 2、 相对来说360安全通信录里的拨号功能比较好用,而且操作简单, ...
分类:
其他好文 时间:
2016-11-06 13:48:40
阅读次数:
188
1.范围查找 select * from 表名 where price>40 and price<80 select * from 表名 where price between 40 and 80 2.离散查询 select * from 表名 where price=30 or price=50 ...
分类:
数据库 时间:
2016-10-17 11:17:16
阅读次数:
148
1.合成索引合成索引就是根据具体的来生成hash值,查找的时候通过hash值来查找就可以了。像blob、text这种数据直接放在where条件中查询效率是非常低的,所以可以使用合成索引。由于索引是hashcode,所以合成索引只能用于精确查询,对‘<‘、‘>‘等范围查找是没有作用的。我们..
分类:
数据库 时间:
2016-03-09 19:20:08
阅读次数:
270
自适应哈希索引采用之前讨论的哈希表的方式实现,不同的是,这仅是数据库自身创建并使用的,DBA本身并不能对其进行干预。自适应哈希索引近哈希函数映射到一个哈希表中,因此对于字典类型的查找非常快速,如SELECT * FROM TABLE WHERE index_col='xxx'但是对于范围查找就无能为...
分类:
数据库 时间:
2016-01-26 23:27:40
阅读次数:
617
优化器选择不适用索引的情况有时候,有乎其并没有选择索引而去查找数据,而是通过扫描聚集索引,也就是直接进行全表的扫描来得到数据。这种情况多发生于范围查找、JOIN链接操作等情况。例如SELECT * FROM orderdetails WHERE orderid>10000 and orderid10...
分类:
数据库 时间:
2016-01-20 22:34:21
阅读次数:
206
1、string.find(str,[start[,end]]):指定范围查找字符或字符串,返回索引值,若返回值为-1,表示未查找到此字符或字符串。例:>>>a="what‘syourname?">>>a.find(‘name‘,0,6)-1#在0至6位置未找到name>>>a.find(‘name‘)12#找到name,并返回其它索引值..
分类:
其他好文 时间:
2016-01-10 17:14:04
阅读次数:
156
S.find(substring,[start[end]])#可指范围查找子串,返回索引值,否则返回-1例如>>>b = 'abcd'>>> b.find('d')3>>> b.find('d',2,4)3>>> b.find('d',3,4)3>>> b.find('d',2,3)-1可见当指定范...
分类:
编程语言 时间:
2015-12-02 14:09:30
阅读次数:
115