bedrock 发表于 2023-5-11 15:50:37

关于查询改写的实现

data:image/png;base64,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
MySQL8.0 优化器介绍(一) (qq.com)
作者方便给一些参考资料吗

sunli8523 发表于 2023-5-12 09:24:16

具体是哪方面的参考资料呀?

KAiTO 发表于 2023-5-12 09:51:52

作者回复:
框架是根据https://dev.mysql.com/doc/refman/8.0/en/controlling-optimizer.html 来写的
有一些稍微深入细节的,来源有 mysql社区 的work log,知名dba blog,知名mysql dba网站,在文章里都有标记链接。
页: [1]
查看完整版本: 关于查询改写的实现