简单的MySQL输出问题

时间:2011-05-06 22:10:59

标签: mysql sql

我有一个关于数字的2行表,并且这是数字立方体。现在,我已经插入了大约1300万个数字,而且这个数字正在迅速增长。

是否有比使用SELECT * FROM table等命令更快的方式输出简单表格?


我的第二个问题涉及一系列数字的选择。如上所述,我有一个大型数据库,可以非常快速地保存数字及其多维数据集。如果你想知道,我正试图找到3个数字,当立方数时总计33。所以,我这样做是通过使用服务器/客户端程序向客户端发送一系列数字,以便他们可以在所述数字范围内执行方程式。

所以,例如,假设第一个客户端进入。我给他一个0,100的范围。然后他去计算数字并报告回告诉服务器他是否找到了三元组。如果他没有,那么循环就会继续。

当客户端单独对数字进行计算时,它会变得极其缓慢。因此,我决定使用数据库来存储立方数,这样客户端就不必进行计算。问题是,我不知道如何只访问一系列数字。例如,如果客户端的范围为0-100,则需要访问0-100中所有数字的多维数据集。

返回一系列数字的select命令是什么?


我用于桌子的引擎是MyISAM。

1 个答案:

答案 0 :(得分:2)

如果您的表格“mytable”有两列

number     cube
  0         0
  1         1
  2         8
  3         27

查询命令将是(假设范围的开始是100,结束是200):

select number, cube from mytable where number between 100 and 200 order by number;

如果您希望此查询尽可能快,请确保以下内容:

  • number是一个索引。因此,您无需进行表扫描即可找到范围的起点。
  • 您创建的索引是群集的。聚簇索引更快 像这样扫描,因为索引中的叶子是记录(相比之下,叶子中的叶子 非聚集索引是指向记录的指针,它可能完全不同 部分磁盘)。同样,聚集索引 强制排序结构 数据。因此,您可以阅读全部100个 来自单个街区的记录。

当然,添加索引会使写入表格的速度稍慢。同样,我假设您按顺序写入表格(即0,1,2,3,4等,而不是10,5,100,3等)。如果以随机顺序写入表,则写入具有聚簇索引的表非常慢(因为数据库必须保持移动记录以适应新记录)。