当谈到 MySQL/MariaDB 分区时,我是一个新手,还没有创建一个,但正在阅读它。我的第一个问题是,如果我根据 dt_created DATETIME 列按年和月对表进行分区,我是否需要更改执行 SQL 查询的方式,以便在执行时开始看到性能提升dt_created 的单日查询?或者,执行标准查询,例如:
SELECT * FROM web_tracking_events where dt_created >= '(some time goes here)'
工作够好吗?
当谈到 MySQL/MariaDB 分区时,我是一个新手,还没有创建一个,但正在阅读它。我的第一个问题是,如果我根据 dt_created DATETIME 列按年和月对表进行分区,我是否需要更改执行 SQL 查询的方式,以便在执行时开始看到性能提升dt_created 的单日查询?或者,执行标准查询,例如:
SELECT * FROM web_tracking_events where dt_created >= '(some time goes here)'
工作够好吗?
基本上。您可以进行如下查询:
SELECT * FROM web_tracking_events where dt_created >= '(some time goes here)'
这称为修剪。见https://dev.mysql.com/doc/refman/8.0/en/partitioning-pruning.html
但是,这意味着 mysql 将打开所有分区以检查是否在那里找到匹配项。