在我的项目中,我必须搜索包含超过300万条记录的Mysql数据库,并且必须在搜索中找到长度为15个符号的字符串(车辆VIN号)。
我的问题是: 1.该搜索会占用大量时间和系统资源吗? 2.我要搜索的字段应该是哪种类型-varchar,text,small_text或..? 3.任何加快搜索速度的建议将不胜感激!
该网站每天进行1000次访问-是多少? 我尚未进行测试,但想在进行任何编码之前分享我的担忧。
提前感谢您的时间!
答案 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的建议。