在我的项目中,我必须搜索包含300多万条记录的Mysql数据库,并且我必须在我的搜索中找到一个长度为15个符号的字符串(车辆VIN号)。
我的问题是: 1.搜索会占用大量的时间和系统资源吗? 2.我应该搜索哪种类型的字段- varchar、文本、small_text或..?3.任何建议,使搜索速度更快,我们将不胜感激!
这个网站每天的访问量是1000次--是不是很多?我还没有测试,但我想在进行任何编码之前分享我的担忧。
提前感谢您的宝贵时间!
发布于 2019-01-25 01:00:44
根据经验:
我们有多个数据库,其中许多数据库的行数远远超过3000万行。有了索引,适当的配置和像样的硬件,我们的查找需要大约1ms。影响查找时间的因素有很多。
最有影响力的是索引。如果您在VIN表上添加一个简单的索引,您应该能够显著减少检索所需数据所需的时间。
除此之外,我强烈建议您进行MySQL调优,以确保您的MySQL服务器有足够的资源可用。我建议使用这个工具来启动https://github.com/major/MySQLTuner-perl。虽然它可能会推荐很多东西,但我强烈建议研究每个建议的更改,并确保它对您现有的硬件是最好的。
最后但并非最不重要的一点是,确保您的机器是为数据库而设计的。(例如:在数据库服务器上使用Raid5非常糟糕)。如果您的计算机具有固态硬盘,请考虑在固态硬盘服务器配置上查找MySQL的建议。
发布于 2019-01-25 00:47:05
Mysql仍然很强大。如果可以,请选中以将其更新到较新的版本。
VIN号码是唯一的吗?cardinality看起来怎么样?
如果基数很好,您的数据大部分是唯一的,您可以在列上创建一个index,您的搜索将(几乎)是即时的。
此外,您希望仅按VIN或一组字段进行搜索,例如VIN +其他参数。如果要按多个字段进行搜索,请将这些字段也包括在索引中。
https://stackoverflow.com/questions/54351399
复制相似问题