原文:http://www.sqlite.org/lang_explain.html
站在用户的角度思考问题,与客户深入沟通,找到嘉兴网站设计与嘉兴网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网站空间、企业邮箱。业务覆盖嘉兴地区。 关键字EXPLAIN”或者语句(by the phrase)“EXPLAIN QUERY PLAN”可以放置在SQL语句之前。(关于这句话提供原文,方便后来者观看An SQL statement can be preceded by the keyword “EXPLAIN”).如果没有EXPLAIN关键字或者语句,SQL语句和平常返回查询信息没有什么两样(Either modification causes the SQL statement to behave as qeruy and to return informationabout how the SQL statement would have operated if the EXPLAIN keyword orphrase had been omitted.)
“EXPLAIN”和”EXPLAIN QUERY PLAN”的输出主要用于数据交互的分析以及故障的查找。输出内容的详细信息随着当前SQLite版本的不同,会有所变化。应用程序不应该使用该语句,因为执行的结果是不确定的,并且只有少量的信息记录下来(since their exact behavior variable and only partially documented).
注:在sqlite3.exe使用教程一文中,简单介绍了基本使用,并且通过创建索引,来说明如何分析执行的SQL的效率。
当EXPLAIN关键字出现在SQL语句之前说明,查询的过程中会返回虚拟机执行的指令集合,输出到控制台。当使用EXPLAIN QUERY TEXT的时候,会返回更加高级的信息,其实是返回更加详细的信息。实际上返回的信息主要是扫描整表,还是使用了索引去查询,当然前提是必要建立索引
EXPLAIN在运行时被执行,不是在预备时
EXPLAIN和EXPLAIN QUERY PLAN前缀影响到运行一个调用sqlite3_step的预编译声明的功能。通过调用sqlite3_prepare生成一个新的预编译声明的过程没有受到EXPLAIN的影响。例外的情况是,有一些特殊的操作码禁止使用EXPLAIN QUERY PLAN关键字,归根究底是性能优化的结果。
意味着调用sqlite3_prepare函数执行的过程中,不会受到EXPLAIN的影响。
1)某些编译声明对sqlite3_prepare起作用,而不是sqlite3_step.这些编译声明不受EXPLAIN影响。
2)不管SQL语句中是否指定EXPLAIN或者EXPLAIN QUERY PLAN关键字,授权回调( authorizer callback)函数都会被执行
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。