Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Php 具有大数据集的MySQL关系数据库?_Php_Mysql_Sql_Join - Fatal编程技术网

Php 具有大数据集的MySQL关系数据库?

Php 具有大数据集的MySQL关系数据库?,php,mysql,sql,join,Php,Mysql,Sql,Join,我正在尝试访问共享一个公共“SpeciesName”字段的两个表中的数据 表“coords”是一个非常大的数据集,有5500多个条目,表本身有大约26个字段。此表的唯一ID是矩阵编号,从0到5500,每行包含稍微唯一的数据。但是,有多行具有相同的“SpeciesName”,表中只有446个唯一的“SpeciesName” 表“common”存储每个“SpeciesNames”的公共名称和图像数据,共有3个字段。基本上,我要做的是使用'SpeciesNames'作为外键在两个表之间建立MySQL关

我正在尝试访问共享一个公共“SpeciesName”字段的两个表中的数据

表“coords”是一个非常大的数据集,有5500多个条目,表本身有大约26个字段。此表的唯一ID是矩阵编号,从0到5500,每行包含稍微唯一的数据。但是,有多行具有相同的“SpeciesName”,表中只有446个唯一的“SpeciesName”

表“common”存储每个“SpeciesNames”的公共名称和图像数据,共有3个字段。基本上,我要做的是使用'SpeciesNames'作为外键在两个表之间建立MySQL关系,并在一个查询中访问这两个表中的数据

从哪里开始?谷歌搜索已经产生了处理包含一个或两个字段的表的结果。然而,当我查询时,我想从PHP中的两个表中选择所有字段。任何关于这方面的建议都会很好

编辑: 我知道目前的数据并不多,但会的!我本来应该更清楚的。这是“coords”:

`Authors` varchar(500) DEFAULT NULL,
  `Journal` varchar(500) DEFAULT NULL,
  `YearPublication` varchar(500) DEFAULT NULL,
  `DOIISBN` varchar(500) DEFAULT NULL,
  `AdditionalSource` varchar(500) DEFAULT NULL,
  `Ecoregion` varchar(500) DEFAULT NULL,
  `GrowthType` varchar(500) DEFAULT NULL,
  `GrowthFormRaunkiaer` varchar(500) DEFAULT NULL,
  `NumberPopulations` varchar(500) DEFAULT NULL,
  `AnnualPeriodicity` varchar(500) DEFAULT NULL,
  `CriteriaSize` varchar(500) DEFAULT NULL,
  `CriteriaOntogeny` varchar(500) DEFAULT NULL,
  `CriteriaAge` varchar(500) DEFAULT NULL,
  `Kingdom` varchar(500) DEFAULT NULL,
  `Phylum` varchar(500) DEFAULT NULL,
  `AngioGymno` varchar(500) DEFAULT NULL,
  `DicotMonoc` varchar(500) DEFAULT NULL,
  `Class` varchar(500) DEFAULT NULL,
  `_Order` varchar(500) DEFAULT NULL,
  `Family` varchar(500) DEFAULT NULL,
  `Genus` varchar(500) DEFAULT NULL,
  `SpeciesName` varchar(500) DEFAULT 'NA',
  `EnteredBy` varchar(500) DEFAULT NULL,
  `EnteredDate` varchar(500) DEFAULT NULL,
  `Source` varchar(500) DEFAULT NULL,
  `SpeciesAuthor` varchar(500) DEFAULT NULL,
  `StudiedSex` varchar(500) DEFAULT NULL,
  `MatrixComposite` varchar(500) DEFAULT NULL,
  `MatrixTreatment` varchar(500) DEFAULT NULL,
  `MatrixCaptivity` varchar(500) DEFAULT NULL,
  `MatrixStartYear` varchar(500) DEFAULT NULL,
  `MatrixStartSeason` varchar(500) DEFAULT NULL,
  `MatrixStartMonth` varchar(500) DEFAULT NULL,
  `MatrixEndYear` varchar(500) DEFAULT NULL,
  `MatrixEndSeason` varchar(500) DEFAULT NULL,
  `MatrixEndMonth` varchar(500) DEFAULT NULL,
  `Population` varchar(500) DEFAULT NULL,
  `LatDeg` varchar(500) DEFAULT NULL,
  `LatMin` varchar(500) DEFAULT NULL,
  `LatSec` varchar(500) DEFAULT NULL,
  `LonDeg` varchar(500) DEFAULT NULL,
  `LonMin` varchar(500) DEFAULT NULL,
  `LonSec` varchar(500) DEFAULT NULL,
  `LatitudeDec` varchar(500) DEFAULT NULL,
  `LongitudeDec` varchar(500) DEFAULT NULL,
  `Altitude` varchar(500) DEFAULT NULL,
  `Country` varchar(500) DEFAULT NULL,
  `Continent` varchar(500) DEFAULT NULL,
  `MatrixSplit` varchar(500) DEFAULT NULL,
  `Observation` varchar(500) DEFAULT NULL,
  `MatrixClassOrganized` varchar(500) DEFAULT NULL,
  `Matrixnumber` varchar(500) NOT NULL DEFAULT '',
  `MatrixClassNumber` varchar(500) DEFAULT NULL,
  `Dimension` varchar(500) DEFAULT NULL,
  `plantType` varchar(500) DEFAULT NULL,
  `matrix` varchar(15000) DEFAULT NULL,
  `_ClassNames` varchar(16000) DEFAULT NULL,
  `StatusStudy` varchar(500) DEFAULT NULL,
  `StatusStudyRef` varchar(500) DEFAULT NULL,
  `StatusElsewhere` varchar(500) DEFAULT NULL,
  `StatusElsewhereRef` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`Matrixnumber`),
和“普通”:

  `ID` varchar(100) NOT NULL,
  `CommonName` varchar(100) NOT NULL,
  `ImageUrl` varchar(200) NOT NULL,
  `UploadImgUrl` varchar(100) NOT NULL,
  UNIQUE KEY `SpeciesAccepted` (`ID`),
  KEY `ID` (`ID`)

我基本上是使用坐标在地图上绘制每条记录,并显示来自“coords”的所有信息——这已经成功实现了。“common”表包含为每个“SpeciesName”(coords.SpeciesName和common.ID)动态创建的新信息,因此我希望显示CommonName,并使用“ImageUrl”和“UploadedImgUrl”以及我以前拥有的数据。我还是MySQL的新手,所以如果我的术语不完美,我道歉

你要找的东西叫做。其基本思想是避免表中存在冗余数据,而只保留引用的单个值(在您的案例中为SpeciesNames)

因此,与包含与
common.CommonName
相同字符串的
coords.SpeciesName
不同,您可以将引用存储为
coords.SpeciesName\u id
,它存储
common.id
。这两个字段的类型均应为
INT
,以便进行性能响应,因为它们的比较速度比字符串快得多

要在单个查询中从两个表中提取数据,可以执行以下操作:

SELECT * FROM coords JOIN common ON coords.SpeciesName_id = common.ID
例如,在谷歌上快速搜索就会得到这样的结果


对的另一次搜索将提示您如何使用PHP执行查询。

MYSQL的主要问题不是数据库大小或记录数!我见过高达10-12GB的数据库文件。主要问题发生在您想要获取记录时,您可能会面临一次可以处理的查询数量问题!如果您注意执行查询的方式,则不会发生严重问题。

5500条记录并不多。我对您的问题/情况并不十分清楚,但我认为您需要多对多关系。相信我5500对于mysql来说非常小:)例如,我现在工作的表大约有700万行。@Peter它每天都在增长,希望确保它能够处理更多的记录,无论它增长到什么大小,考虑到数据的性质。它需要能够扩展,我想为未来投保!如果mysql有数千个数据集,mysql将是垃圾,而且不会像今天这样流行。这是非常小的数据集。对于MySQL来说,表中的数百万条记录不是问题,只要您为您执行的查询设置了合适的索引。根据我从OP的问题中了解到的,它处理的是矩阵,有时需要冗余数据。根据我的理解,OP希望删除冗余的SpeciesName条目。当然,并非总是希望消除所有冗余。