搜索具有超过300万条记录的mysql数据库

时间:2019-01-24 16:36:24

标签: php mysql

在我的项目中,我必须搜索包含超过300万条记录的Mysql数据库,并且必须在搜索中找到长度为15个符号的字符串(车辆VIN号)。

我的问题是: 1.该搜索会占用大量时间和系统资源吗? 2.我要搜索的字段应该是哪种类型-varchar,text,small_text或..? 3.任何加快搜索速度的建议将不胜感激!

该网站每天进行1000次访问-是多少? 我尚未进行测试,但想在进行任何编码之前分享我的担忧。

提前感谢您的时间!

2 个答案:

答案 0 :(得分:1)

MySQL仍然很强大。检查是否可以将其更新为较新的版本。

VIN码是否唯一? cardinality的外观如何?

如果基数很好,则您的数据大部分都是唯一的,可以在该列上创建一个index,并且搜索(几乎)是即时的。

此外,您只想按VIN或一组字段进行搜索,例如VIN +其他参数。如果您要按多个字段进行搜索,那么这些字段也应包含在索引中。

答案 1 :(得分:1)

根据经验:

我们有多个数据库,其中许多数据库的行数远远超过3000万。使用索引,正确的配置和适当的硬件,我们的查找大约需要1ms。有多个因素会影响查找时间。

最具影响力的是索引编制。如果在VIN表上添加一个简单索引,则应该能够大大减少检索所需数据所花费的时间。

除此之外,我强烈建议您进行MySQL调整,以确保您的MySQL服务器有足够的资源来使用。我建议使用此工具开始https://github.com/major/MySQLTuner-perl。尽管它可能会建议很多事情,但我强烈建议研究每个建议的更改,并确保它最适合您拥有的硬件。

最后但并非最不重要的一点,请确保您的计算机适用于数据库。 (例如:在数据库服务器上使用Raid5很糟糕)。如果您的计算机装有SSD,请考虑在SSD服务器配置上查找有关MySQL的建议。