mySQL更快搜索单个列?或两列串联?或使用加入?

时间:2016-07-05 21:53:45

标签: mysql

我有机会创建一个可能包含数百万甚至数十亿条记录的表...我知道大数据,我应该朝着类似Mongo / node.js的方向发展,但这是一个原型而我没有足够的时间来学习。

MySQL表将以X和Y方式保存坐标。 它可能看起来像这样:

|   id|   x|   y|
|    0| 105| -12|
|    1|  23|  18|
|    2|-529|  -1|

或者像这样:

|   id|     coord|
|    0|  x105y-12|
|    1|    x23y18|
|    2|  x-529y-1|

现在,制作双列会更快;

  1. 按X搜索,然后按Y
  2. 搜索
  3. 使用JOIN搜索X& Y
  4. 或者搜索第二个表中的单个列会更快吗?

2 个答案:

答案 0 :(得分:1)

我会选择第一个选项。如果搜索速度快且空间不是问题,我也会在这两列上有索引。

答案 1 :(得分:1)

将数据放在两列中肯定会更快,尤其是您可以将它们定义为数字(vs alpha)数据类型。

可能想要在两个数据列上创建 a 多列,但索引是一个复杂的问题,特别是如果你确实进入数百万或数十亿记录水平,它有很多因素。对于小型原型,它应该不是问题。

你当然可能想要研究一个无sql的解决方案(不确定Node.js与它有什么关系),特别是对于地理坐标,请查看新的Geo API in Redis

(请注意,MySql中的JOIN通常是指跨多个表进行搜索,因此您可能希望使用不同的语言。)