我编写的网络应用程序规模非常小,大部分时间仅供个人使用,因此数据库大小和查询时间对我来说从来都不是问题。
我使用 InnoDB 数据库类型,因为我习惯使用约束(ON DELETE CASADE),因为我排除了许多表中的许多信息并稍后将它们连接起来。
现在,我创建了一个 Web 应用程序,每周通过 CSV 文件导入一次数据。文件大小有时大于 1 MB,行数超过 50.000。
CSV 文件来自没有 API 的旧应用程序。访问数据的唯一方法是将其导出为 CSV 并将其导入到我的应用程序中。
我只是通过 php 将 CSV 上传到服务器,然后使用 php 将数据逐行添加到我的 MySQL 数据库中。详细来说,我将遍历文件的每一行并执行“INSERT INTO”查询。因此,我在创建行和达到数据库内存限制(默认值)时遇到了很大的加载时间。增加限制感觉就像做错了什么,并且也会导致查询时间过长。
我可以做什么来提高数据库的性能?
编辑:它不能直接将 CSV 加载到 MySQL,因为我需要将内容拆分到不同的表中。例如:CSV 有一个带有types
. 我创建了一个types
表并将值添加到该表中,在主表中我只添加了 id。这样我以后在 php 中就有了更多的灵活性,因为我不需要处理值名称。我只能用 ids 来工作。另外,我做了类似“如果数字以 XY 开头,则将值 Z 添加到 mysql 表中的特定列”之类的操作
杨魅力
达令说