相关疑难解决方法(0)

在MySQL数据库中存储纬度/经度时使用的理想数据类型是什么?

请记住,我将在lat/long对上执行计算,哪种数据类型最适合与MySQL数据库一起使用?

mysql mapping maps database-design latitude-longitude

420
推荐指数
14
解决办法
29万
查看次数

在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么?

在ANSI SQL兼容数据库中存储纬度或经度数据时,哪种数据类型最合适?应该float使用,或decimal,或......?

我知道Oracle,MySql和SQL Server已经添加了一些专门用于处理地理数据的特殊数据类型,但我对如何将信息存储在"普通的"SQL数据库中感兴趣.

sql database geocoding latitude-longitude

293
推荐指数
2
解决办法
21万
查看次数

为什么浮点数不准确?

为什么有些数字在存储为浮点数时会失去准确性?

例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:

32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)

这样一个看似简单的数字如何在64位内存中表达"太大" ?

language-agnostic floating-point precision

181
推荐指数
4
解决办法
3万
查看次数

MySQL:float和double有什么区别?

检查新的数据库结构我看到有人将字段从float更改为double.想知道为什么,我检查了mysql文档,但老实说不明白有什么区别.

谁能解释一下?

mysql

98
推荐指数
6
解决办法
11万
查看次数

Database/SQL:如何存储经度/纬度数据?

表现问题......

我有一个拥有地理定位数据(经度和纬度)的房屋数据库.

我想要做的是找到使用InnoDB数据库引擎将位置数据存储在我的MySQL(v5.0.24a)中的最佳方法,以便我可以执行大量查询,其中我将返回所有之间的所有主记录x1和x2 latitude以及y1和y2 longitude.

现在,我的数据库架构是

---------------------
Homes   
---------------------
geolat - Float (10,6)
geolng - Float (10,6)
---------------------
Run Code Online (Sandbox Code Playgroud)

我的疑问是:

SELECT ... 
WHERE geolat BETWEEN x1 AND x2
AND geolng BETWEEN y1 AND y2
Run Code Online (Sandbox Code Playgroud)
  • 我上面描述的是使用Float(10,6)存储纬度和经度数据并分离出经度/纬度的最佳方法吗?如果不是,那是什么?存在Float,Decimal甚至Spatial作为数据类型.
  • 这是从性能角度执行SQL的最佳方法吗?如果不是,那是什么?
  • 使用不同的MySQL数据库引擎是否有意义?

更新:仍然没有答案

我在下面有3个不同的答案.一个人说要用Float.一个人说要使用INT.一个人说要使用Spatial.

所以我使用MySQL"EXPLAIN"语句来衡量SQL的执行速度.如果使用INTFLOAT用于经度和纬度数据类型,似乎绝对没有SQL执行(结果集提取)的差异.

使用" BETWEEN"语句似乎比使用" >"或" <"SQL语句要快得多.使用" BETWEEN"比使用" >"和" <"语句快近3倍.

话虽如此,我仍然不知道如果使用Spatial会对性能产生什么影响,因为我不清楚它是否支持我运行的MySQL版本(v5.0.24)......以及我如何支持它如果支持.

任何帮助都会受到极大的欢迎

mysql sql database performance sqlperformance

69
推荐指数
6
解决办法
8万
查看次数