查询执行路径

当希望 MySQL 能够以更高的性能进行查询时,最好的办法就是弄清楚 MySQL 是如何进行优化和查询的。一旦理解这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行。
下图显示了 MySQL 如何处理一个用户请求的过程。
[img]http://dl2.iteye.com/upload/attachment/0128/2632/e9ad19a3-3b19-3926-a134-e18aca8d1d31.png[/img]
从图中可见,它的处理过程大致是这样的:
(1)客户端发送一条查询给服务器。
(2)服务器先检查查询缓存,如果命中,则立刻返回缓存结果,否则进入下一步。
(3)服务端进行 SQL 解析、预处理,再由优化器生成对应的执行计划。
(4)MySQL 根据优化器生成的执行计划,调用存储引擎的 API 来执行计划。
(5)返回结果给客户端。
在优化关联查询时需要强调以下几点:
(1)确保 ON 或者 USING 子句中的列上有索引。在创建索引的时候就要考虑到关联的顺序。比如,当表 A 和表 B 用列 c 关联时,如果优化器的关联顺序是 B、A,那么就不需要在 B 表的对应列上建立索引。没有用到的索引只会带来额外的负担。一般来说,除非有其他理由,否则只需要在关联顺序中的第二个表的相应列上创建索引。
(2)确保任何的 GROUP BY 和 ORDER BY 中的表达式只涉及到一个表中的列,这样 MySQL 才有可能使用索引来优化这个过程。
(3)当升级 MySQL 时需要注意:关联语法、运算符优先级等其他可能会发生变化的地方。因为以前是普通关联的地方可能会变成笛卡尔积,不同类型的关联可能会生成不同的结果等。

注:摘自《高性能 MySQL》第六章 -- 查询性能优化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL模糊查询资源路径是通过使用LIKE运算符实现的。LIKE运算符用于在WHERE子句中执行模糊查询。 假设有一个包含资源路径的表,其中包括一个名为"path"的列,我们想要在这个列中执行模糊查询。以下是一个示例表和一些查询示例: 创建一个示例表: ``` CREATE TABLE resources ( id INT PRIMARY KEY AUTO_INCREMENT, path VARCHAR(100) ); INSERT INTO resources (path) VALUES ('/path/to/file1'), ('/path/to/file2'), ('/path/to/file3'), ('/another/path/to/file4'); ``` 执行简单的模糊查询: ``` SELECT * FROM resources WHERE path LIKE '/path%'; ``` 这将返回所有路径以"/path"开头的资源。 执行带有通配符的模糊查询: ``` SELECT * FROM resources WHERE path LIKE '%/file%'; ``` 这将返回所有路径中包含"/file"的资源。 使用多个通配符的模糊查询: ``` SELECT * FROM resources WHERE path LIKE '%/path%/%/file%'; ``` 这将返回所有路径中包含"/path"和"/file"的资源,并且这两个字符串之间可以有任意字符。 在模糊查询中使用转义字符: ``` SELECT * FROM resources WHERE path LIKE '/path/to/file\_%' ESCAPE '\'; ``` 这将返回路径为"/path/to/file_"的资源。由于"_"在模糊查询中是一个通配符,所以我们使用转义字符"\_"来表示字面意义上的下划线。 使用NOT LIKE执行与模糊查询相反的操作: ``` SELECT * FROM resources WHERE path NOT LIKE '%/file%'; ``` 这将返回所有不包含"/file"的资源。 综上所述,MySQL的模糊查询功能非常强大,可以用于查找满足特定模式的资源路径。可以使用LIKE运算符,结合通配符和转义字符,在WHERE子句中编写适当的模糊查询条件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值