在MySQL的SQL语句或SQL文件经常看到如下用户:
SELECT /*!40001 SQL_CACHE */ * FROM pre_common_syscache WHERE cname IN ('ipbanned')/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;请问其中/*!代码 ……*/代表什么意思?可以用于哪些地方?我在MySQL手册中没有看到具体讲解。
谢谢
SELECT /*!40001 SQL_CACHE */ * FROM pre_common_syscache WHERE cname IN ('ipbanned')/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;请问其中/*!代码 ……*/代表什么意思?可以用于哪些地方?我在MySQL手册中没有看到具体讲解。
谢谢
解决方案 »
- 链接数据库出现对‘mysql_init’未定义的引用,对‘mysql_real_connect’未定义的引用
- mysql修改主键
- 插入语句的小难题
- 发个帖子,论述一下服务器负载
- mysql5.0.10-0在redhat as 3的安装启动不了的问题
- >MYSQL,别处还有好的论坛去处吗?谢谢!!<
- 如何释放mysql的连接?
- 关于图片网站的数据库设计方法,求大神!!!!
- 本人有MySql客户端的VC源码,XML的完全解析器(本人所编,不懂的地方可以问)以及许多有用的源码,而且提供技术支持,愿意和我交换的人请进来
- mysql 多字段匹配一个值设计
- SQL多表取记录
- Linux 日期if判断后出现问题
40001 SQL_CACHE, 意味着数据库要缓存整个SQL语句。还有SQL_NO_CACHE的hint
show status like 'qcache_%'
select /*!40001 SQL_CACHE */ * FROM tb
select /*!40001 SQL_no_CACHE */ * FROM tb 效果和不加/*!..*/一样
select SQL_CACHE * FROM tb
select SQL_no_CACHE * FROM tb
还有相关变量
变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。
但MYSQL中 为了保持兼容标准SQL,MYSQL上的语句放在 /*! ... */ 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中它会执行在其他数据库中 /*! ... */就是注释