摘要: MySQL内存表使我们经常会用到的,但是MySQL内存表的也不是提高读性能的万能工具,在有些情况下,MySQL内存表可能会比其实表类型的B-TREE更慢。CREATETABLE`mem_test`( `id`int(10)unsignedNOTNULLDEFAULT0, `name`varchar(10)DEFAULTNULL, `first`varchar(10)DEFAULTNULL, PRIMARYKEY(`id`), KEY`NewIndex1`(`name`,`first`) )ENGINE=MEMORY; CREATETABLE`innodb_test`( `id`int(10). 阅读全文
posted @ 2012-04-28 19:00 balaamwe 阅读(818) 评论(0) 推荐(0) 编辑
摘要: http://www.codesky.net/article/200903/148361.html下面将通过实例分析两种排序实现方式及实现图解:假设有 Table A 和 B 两个表结构分别如下:1、利用有序索引进行排序,实际上就是当我们Query 的ORDER BY 条件和Query 的执行计划中所利用的Index的索引键(或前面几个索引键)完全一致,且索引访问方式为rang、ref 或者index的时候,MySQL可以利用索引顺序而直接取得已经排好序的数据。这种方式的ORDER BY 基本上可以说是最优的排序方式了,因为MySQL不需要进行实际的排序操作。假设我们在Table A和B上执行 阅读全文
posted @ 2012-04-28 18:58 balaamwe 阅读(1256) 评论(0) 推荐(0) 编辑
摘要: http://tech.idv2.com/2011/07/05/geohash-intro/上回说到了用经纬度范围实现附近地点搜索。 一些小型应用中这样做没问题,但在大型应用中它有个显著的缺点:速度慢。慢的原因有两个, 第一是范围比较的索引利用率并不高,第二是SQL语句极其不稳定(不同的当前位置会产生完全不同的SQL查询),很难缓存。可以考虑使用geohash算法。geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。比如,北海公园的编码是wx4g0ec1。geohash有以下几个特点:首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 ( 阅读全文
posted @ 2012-04-28 13:53 balaamwe 阅读(417) 评论(0) 推荐(0) 编辑
摘要: http://tech.idv2.com/2011/06/17/location-search/球面最短距离公式球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章,这里就不再赘述了。Great-circle distanceHaversine formula值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函数, 而两点间距离很短时(比如地球表面上相距几百米的两点),余弦函数会得出0.999...的结果, 会导致较大的舍入误差。而Haversine公式采用了正弦函数,即使距离很小,也能保持足够的有效数字。 以前采用 阅读全文
posted @ 2012-04-28 13:52 balaamwe 阅读(1551) 评论(0) 推荐(0) 编辑