我有两张大桌子,例如:
'tbl_items'和'tbl_items_transactions'
第一个表保留一些项目元数据,这些元数据可能有20个(varchar)列,包含数百万行......第二个表保留第一个表的每个事务。
例如,如果用户向tbl_items
插入新记录,则会自动将新记录添加到tbl_items_transactions
,并使用相同的数据加date
,username
和{{1保留每一行的历史记录。
所以在上面的场景中,两个表具有相同的列,但transaction type
有 3 额外列tbl_items_transactions
,date
,username
以保留每个列transaction_type
历史记录
现在假设我们有1000个用户想要使用Web应用程序插入,更新,删除tbl_items
记录。所以这两个表很快就会缩放(tbl_items
中可能有十亿行)
我已经尝试过MySQL,MariaDB,PostgreSQL ......它们非常好但是当表格规模和数百万行插入时,它们在tbl_items_transactions
上运行一些选择查询时很慢......但有时PostgreSQL比MySQL快或MariaDB
现在我觉得我做错了...如果你是我......你是否使用MariaDB或PostgreSQL或类似的东西来构建你的数据库就像我做的那样?
答案 0 :(得分:0)
您的设置错误。
您不应该复制tbl_items
中tbl_items_transactions
的列,而应该在后一个表中指向前者的外键。
这样就可以保留数据完整性,tbl_items_transactions
会小很多。这种技术称为规范化。
要在表变大时加快查询速度,请在其上定义符合WHERE
和JOIN
条件的索引。