Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的MySQL输出问题_Mysql_Sql - Fatal编程技术网

简单的MySQL输出问题

简单的MySQL输出问题,mysql,sql,Mysql,Sql,我有一个两行的数字表,这个数字立方体。现在,我插入了大约1300万个数字,而且增长非常非常快 有没有比使用类似于SELECT*fromtable的命令更快地输出简单表格的方法 我的第二个问题涉及一系列数字的选择。如上所述,我有一个庞大的数据库,它的增长速度非常快,可以保存数字及其多维数据集。如果你想知道的话,我想找出3个数字,当三次方化时,它们的总和是33。所以,我通过使用服务器/客户端程序向客户端发送一系列的数字,这样他们就可以对这些数字进行等式运算 例如,假设第一个客户机插话。我给他一个0

我有一个两行的数字表,这个数字立方体。现在,我插入了大约1300万个数字,而且增长非常非常快

有没有比使用类似于
SELECT*fromtable
的命令更快地输出简单表格的方法


我的第二个问题涉及一系列数字的选择。如上所述,我有一个庞大的数据库,它的增长速度非常快,可以保存数字及其多维数据集。如果你想知道的话,我想找出3个数字,当三次方化时,它们的总和是33。所以,我通过使用服务器/客户端程序向客户端发送一系列的数字,这样他们就可以对这些数字进行等式运算

例如,假设第一个客户机插话。我给他一个0,100的范围。然后,他开始计算数字,然后报告给服务器,告诉服务器他是否找到了三元组。如果他不这样做,循环就会继续

当客户机自己计算数字时,速度非常慢。因此,我决定使用一个数据库来存储立方数字,这样客户就不必进行计算。问题是,我不知道如何访问一系列的数字。例如,如果客户机的范围为0-100,则需要访问0-100之间所有数字的多维数据集

返回数字范围的select命令是什么


我用于该表的引擎是MyISAM。

如果您的表“mytable”有两列

number     cube
  0         0
  1         1
  2         8
  3         27
查询命令将为(假设范围的起点为100,终点为200):

如果希望此查询尽可能快,请确保以下各项:

  • 数字是一个索引。因此,您无需进行表格扫描即可找到范围的起点
  • 您创建的索引是聚集的。聚集索引的速度要快得多 像这样扫描,因为索引中的叶就是记录(相比之下,索引中的叶是 非聚集索引是指向可能位于完全不同位置的记录的指针
    磁盘的一部分)。此外,还有聚集索引 将已排序的结构强制放置在 数据。因此,你可以阅读所有100个单词 来自单个块的记录

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

SELECT*
,因为查询可能会根据数据类型(即:BLOB)延迟。仅选择您需要阅读的有关
限制
偏移量
的内容:@ypercube!如果你把它作为一个答案发布,我会接受的。非常感谢你的回答,但是我有一些问题,因为我是一个MySQL noob。首先,关于索引,我想你指的是一把钥匙?我将数字列n设置为表的主键。我相信这是指数,但是如果我错了,请纠正我。其次,如何创建集群数据库?+1很好。您可以添加数字为浮动且不按顺序排列时的大小写(添加索引并使用索引上的
中间位置
,或使用
限制偏移量
)。@Matt;如果您的表正在使用InnoDB引擎(请检查表定义),则默认情况下主键是聚集的。@Matt;您可以通过编辑在问题的末尾添加表定义。@Matt:您不需要转换到MyISAM。你为什么认为你需要这么做?
select number, cube from mytable where number between 100 and 200 order by number;