当前位置: 首页 > news >正文

关于instr和like的比较

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

关于instr和like的性能网上有很多版本,晚上做了一个测试。得出以下结论

1,如果某一列,上面建有索引,那么like会走索引查询,instr会全表扫描

2,如果某一列,上面没有索引,那么instr性能会比like高


转载于:https://my.oschina.net/lvzjane/blog/185723

相关文章:

  • 解决 vim 中文编码问题
  • 修改静态参数scope=spfile错误,导致spfile文件被破坏,无法重启的解决方法
  • Visual Leak Detector 2.2.3 Visual C++内存检测工具
  • MSChart实例
  • Linux与Windows编译器的区别
  • 关于strcpy的安全函数的选择
  • 禅修程序员十诫
  • 我们为什么要使用NodeJS
  • Linux下配置jdk1.7
  • 招募贴:Hadoop专业解决方案招募义务翻译人员
  • 演练Ext JS 4.2自定义主题
  • html5掷骰子的小demo
  • 将DG调整为最大保护模式,报ORA-03113: end-of-file on communication channel
  • emacs之配置代码风格
  • Struts2MVC底层的简单实现
  • keepalived做nginx的高可用,企业版简单介绍。
  • 【面试必备】CSS盒模型的点点滴滴
  • DataType--数值类型
  • Ubuntu下安装配置Phabricator
  • HttpClient 4.3学习笔记
  • Obj-C的hello,world 1
  • Percona5.6.15线程池压力测试
  • VMware下Ubuntu与宿主Windows共享文件夹
  • 中美时间换算
  • Guava学习笔记 第6个记录(Immutable(不可变)集合)
  • 〖Linux〗Ubuntu13.10搭建文件共享Samba服务器
  • 多媒体--图画板
  • SSH中各个框架的作用以及Spring AOP,IOC,DI详解
  • Linux资源监控_Nmon
  • Medoo个人修改版
  • Msmq设计文档(赋源代码)
  • Python开发第一步的环境搭建
  • 【转】spring MVC入门示例(hello world demo)
  • 分享给设计师们9款免费和有用的英文字体
  • doctest使用注意点 -- 省略号的使用
  • IE9 BUG overflow :auto 底部空白解决方案
  • 用shc加密shell脚本
  • hdu 1452 因子和 + 逆元素+ 快速幂
  • Eclipse Plugin for Hadoop2.2.0
  • Linux备份数据 结果为0 原因:mysqldump command not found
  • 开启win7笔记本自带无线功能
  • java.util.Scanner的日常用法
  • ARM处理器是有益补充
  • 关于C#中Thread.Join()的一点理解
  • 动手才能进步(冒泡法示例)
  • Storm Control
  • .NET连接MySQL数据库的方法实现
  • 利用权限设置来阻止程序运行
  • Linux-HA实战(1)— Heartbeat安装
  • ios app 提交评审注意事项
  • sqlserver 登录名迁移
  • 响应式设计就是这个时代最值得学习、时间的趋势
  • 查询SQLServer 服务器,执行过的SQL语句耗时!
  • 生活小记
  • PHP学习笔记 第六讲 PHP数组的创建修改应用
  • 【HDOJ】1071 The area
  • HDFS文件系统的操作
  • com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
  • JSON入门指南--服务端处理JSON
  • nginx针对请求的uri来代理
  • iOS-UIScrollView以及代理
  • 学习笔记之CursorAdapter
  • PHP连接MySQL查询结果中文显示乱码问题
  • 网站被跳转到联通域名无法访问页面
  • hdu 1575 Tr A (二分矩阵)
  • 手机腾讯网mt框架简介
  • 【android-音视频】listview中播放音频,实现音频时长的倒计时,暂停,切换。
  • linux下mysql双机主从复制(一主一从)----方法2
  • MEF 编程指南(二):定义可组合部件和契约
  • CopyTo 方法详解
  • difference softreference and weakreference
  • 5个界面效果很炫的JavaScript UI 框架
  • 菜鸟学习linux笔记(二)
  • Office 2013集成SP1
  • 使用继电器制作振荡器
  • std::ostringstream
  • JVM执行子系统探究——类文件结构初窥
  • asmack获取用户头像和设置昵称与获取好友昵称
  • ERROR 1044 (42000)
  • 源代码安装mysql配置步骤
  • 接手线上Mysql服务器,我们需要做什么?
  • 生产环境下ftp的迁移并构建corosync+pacemaker的高可用
  • Centos之故障排除
  • Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字
  • 【笔记】UML核心元素
  • 汉邦监控录像数据恢复软件---蓝梦软件BestRecoveryForHBMS
  • SQL实现将一个表的数据插入到另外一个表的代码
  • javascript call and apply
  • hive资源索引
  • iptables 学习笔记 一 要领入门
  • 部署万兆以太网的十个注意事项
  • APUE学习笔记——信号
  • 翻页表单功能测试点
  • iOS调试 - 基本技巧
  • 《转》阿里负责人揭秘面试潜规则
  • linux包之sysstat之mpstat与pidstat命令
  • ajax简单例子
  • 海量数据排序
  • 自解压shell文件的制作
  • [转载]Web前端开发工程师编程能力飞升之路
  • DOM时钟
  • 新闻向上像素滚动
  • hbm.xml支持的类型
  • hadoop集群全纪录
  • [WPF] 动画Completed事件里获取执行该动画的UI对象
  • [转载]MySQL的Galera Cluster配置说明
  • dom4j读取配置文件
  • SQL Server 2012笔记分享-10:理解数据压缩
  • HTML Parsing Error KB927917
  • CSS z-index 属性 控制div上下层次
  • 特殊的CSS选择符
  • LINK : fatal error LNK1168
  • 我们会不会与操作系统谈一场奋不顾身的爱情──《云端情人》有感
  • python 实现Hadoop的partitioner和二次排序
  • 图的遍历之深度优先搜索和广度优先搜索
  • HSRP协议详解:配置HSRP实现网关的冗余备份
  • html 简单学习
  • zabbix 安装和基础监控
  • 转 Java多线程中Sleep与Wait的区别
  • SQL Server 2012笔记分享-42:SQL Server Agent服务配置建议
  • 数据库实战:SQL Server系列网络课程资料集
  • SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面
  • SQL Server性能常用语句
  • 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录
  • CentOS6 修改MySQL编码
  • iOS学习之WebView的使用
  • C文件编译、链接指令
  • Extjs 之dataview布局
  • SDN驱动云数据中心的发展
  • 第 13 章 装饰模式【Decorator Pattern】
  • JS 简易控制台插件 [供 博客, 论坛 运行js用]
  • 完整版linux下android源码下载、编译、模拟器启动运行
  • 杭电 1421 搬寝室
  • linux里终端安转视频播放器的操作及显示
  • 做网站的几点分享
  • 【职场酸甜苦辣咸】+IT女汉子坚持的梦想和原则
  • AD域服务器中批量创建帐户
  • 设置HTML的一个元素
  • svn:Attempted to lock an already-locked dir
  • VMware Workstation与Hyper-V不兼容。请先从系统中移除Hyper-V角色,然后再运行VMware Workstation。...
  • Memcached如何实现高性能批量删除
  • Linux/Ubuntu下解压命令
  • 三层架构(我的理解及具体分析)
  • 非聚集索引的注意事项
  • Shell脚本编程知识点总结及范例
  • 安卓面试备考题收集
  • iOS开发UI篇—无限轮播(循环展示)
  • 微软社区大课堂 - Transform the Datacenter (数据迁移与Windows Server )社区巡讲- 北京站...
  • [转]Nginx 502 PHP LNMP 502 终极解决方案 完美解决502 用 upstream 和 fastcgi_next_upstream 可以极大缓解...
  • Struts2常用标签总结
  • svn钩子自动化同步代码提交任务
  • 控制extsj4.1 gridpanel表格行或者单元格的编辑
  • 内存和序列
  • [地图SkyLine二次开发]框架(2)
  • Powershell与运维之服务器管理(一) 利用Powershell管理HP服务器
  • 基于Cookie跨域的单点登录问题
  • 软件开管理工具
  • python打印列出目录及其子目录里面的内容
  • Linux硬件硬盘分区知识-总结
  • win7 64位 安装oiracle 32位 plsql问题
  • Android系统对应用程序权限申请的处理方式分析
  • Ubuntu 14.04 安装 DevStack与遇到的的问题记录
  • umount device is busy
  • Linux总结----PS命令
  • 为什么少有人在Windows电脑上安OS X?
  • MD摘要算法
  • 使用WMI和性能计数器监控远程服务器权限设置
  • JS错误 theForm.submit();SCRIPT3: 找不到成员。
  • centos6 下安装xfce+vnc
  • Juniper MIP
  • java静态成员静态代码块初始化顺序
  • java中重写equals方法
  • swift在线天气预报案例教程
  • Application 用法
  • SQLite的使用一
  • Oracle 分区表中索引失效
  • 微信打飞机代码
  • cache 的设计与实现
  • zrender源码分析4--初始化Painter绘图模块2
  • 学用 ASP.Net 之 System.Collections.Generic 下的容器类
  • WinAPI 字符及字符串函数(12): lstrlen - 串长度
  • 装饰者模式 (decorator pattern)
  • zabbix通过UNIXODBC连接数据库
  • Mybatis学习笔记-一级缓存与二级缓存
  • 转载:谈谈BM25评分
  • [设计模式]工厂模式
  • Intellij IDEA 12 详细开发教程(三)忽略编译错误设置和快捷键
  • Android中继承的Dialog导致程序崩溃
  • Android开发学习路线图
  • 【进阶修炼】——改善C#程序质量(4)
  • “渊渟岳峙”厦门行
  • linux下使用httping测试web响应时间
  • 使用windows system backup 裸机恢复域控-windows2008
  • HDU 2531 (BFS搜索)
  • mysql 去重
  • SmartGit 无限试用方法
  • loadrunner 打印变量
  • MySQL使用问题
  • Puppet自动化运维排错案例
  • ArcGIS For Flex学习之Mapping---Add LODs for extra zooming
  • cocos2d-x使用ant批量打包
  • jdk和tomcat环境变量批处理(.bat)
  • 【剑指offer】八皇后问题
  • ColorBlinder(我是色盲)
  • 移动页面框架头尾固定中间滚动 absolute模拟fixed
  • 让本地网络与微软windows azure互通
  • C语言实现base64编码,base64解码
  • Java NIO 和 IO的区别
  • 教你从进程中判断病毒木马的存在
  • 你认识什么是前端吗?你是合格的前端吗?
  • 深秋偶得
  • .Net免费公开课视频+资料+源码+经典牛逼 汇总篇【持续更新】
  • Crystal Report在.net中的两种显示方式
  • 如何编译符合自己路由器的的OpenWrt固件
  • Jquery 数组操作(转)
  • HDU 3829 Cat VS Dog
  • mysql的粗略学习
  • 定制文件上传按钮
  • 20141110的alltosun面试
  • MySQL Left Join,Right Join
  • 编译安装mysql-5.5.33
  • JSON应用场景与实战
  • MapReduce - Map输入的分片
  • 安全策略篇 ASPF:隐形通道
  • Mysql中将查询出来的多列的值用逗号拼接
  • 凌云ERP解析企业如何选择合适的ERP系统
  • 通​过​C​a​c​t​i​监​控​w​i​n​d​o​w​s​资​源
  • 获取datagrid中编辑列combobox的value值与text值
  • 重新认识C#..
  • window 平台下mysql主从的监控(window执行计划配合vb脚本)
  • JavaSE基础笔记一
  • Sql Server系列:数据类型转换函数
  • MVC中关于JSON的处理
  • C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)...
  • [转] 电子技术*笔记4【2013-03】
  • LINQ学习网址
  • php 虚拟主机和虚拟目录的配置
  • dojo mobile问题汇总
  • angular学习-入门基础
  • destoon标签
  • AM335X 3款核心板比较
  • javascript document.cookie
  • 安装 Nginx 并配置负载均衡
  • Extjs的文件上传问题
  • jquery源码解析:jQuery延迟对象Deferred(工具方法)详解1
  • CentOS6.4 安装MongoDB
  • 关于HTML条件注释你可能不知道的一些事儿
  • 关于android的apk版本升级的一些建议
  • 在Postgresql中添加新角色(Role)
  • ylbtech-LanguageSamples-Libraries(库)
  • (转帖)美国人教你这样用Google,你真的会变特工
  • 一款基于jQuery的图片分组切换焦点图插件
  • android Cursor转换为model
  • 如何实现两台Domino之间的相互访问
  • Cinder - 读取glusterfs_shares_config代码
  • Windows phone 8.1 MessageBox 变了哦!
  • 制作U盘OS X安装盘
  • Python之迭代器(iterator)
  • 【Ural】1519. Formula 1
  • 职业生涯(一)——你就是自己想要成为的那个人!
  • MongoDB学习笔记(查询)
  • 【发现趣味】要你命三千——老代码中的那些坑
  • GridView 栏位宽度自由拖动
  • Hive总结(十二)Hive查询进阶
  • ostringstream的使用方法
  • 数组 , List互转
  • PHP使用MySQL数据库
  • PriorityQueue 优先队列
  • 接口测试使用手册
  • Nginx location 配置踩坑过程分享
  • 如何定义性能需求
  • ActiveXObject ADODB.Stream封装
  • 一个简单的文本编译器
  • Python 日期时间处理
  • HTML fieldset 标签
  • linux工作技能第二发:vi
  • MongoDB实战系列之三:MongoDB的主从部署
  • Codeforces 437D The Child and Zoo(贪心+并查集)
  • Windows安装office出现1046错误
  • matlab调用C语言
  • 仿iOS Segmented Control样式
  • 打包安装程序。
  • JS客户端学习笔记二
  • 迷途指针 new delete
  • xcode 好的plugins
  • Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
  • springmvc 使用
  • 使用webclient上传下载实例
  • sql server 如何在一个数据库中操作另一个数据库中的数据
  • Android中生成库文件与移除以及导入jar包重复问题
  • css(二) block,inline和inline-block概念和区别
  • Linux命令-网络命令:ping
  • Heartbeat+DRBD+NFS 构建高可用的文件系统
  • 【15.03.13】手动快速在Linux桌面上添加一个程序图标快捷方式
  • 从12306网站新验证码看Web验证码设计与破解
  • 路由器升级
  • shared_ptr的简单实现
  • 为SQL Server 增加链接到SQL Server 的链接服务器
  • HBase Java API类介绍
  • iOS开发-iOS学习完整路线
  • 设计模式------简单工厂模式
  • Apache双机热备
  • 字符与ascii的互转
  • php-mvc模式(2)
  • 如何保持自己 fork 的项目和原始项目同步
  • 又看了半天的pdf格式的js方面的书,感觉受益匪浅啊,只会一点操作的我,要学好理论...
  • 吐槽
  • 【Android开发】范例2-实现带图标的ListView
  • 几种SWAP算法
  • Sipdroid项目的编译运行
  • D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
  • React学习笔记—JSX
  • 批处理管理员运行当前路径问题
  • 在没有显示器和IP未知的情况下如何使用树莓派
  • Spring Batch系列总括(转载)
  • 微信工程师为你讲述春晚红包的系统设计和优化
  • CSS 相邻选择器(七)
  • 开放API接口 笑话、天气、新闻
  • centos ip地址固定
  • freemarker判断对象是否为空
  • Emacs使用Tramp远程编辑服务器上的文件
  • iOS后台如何保持socket长连接和数据传输
  • MySQL中serial关键字的作用
  • 离线版-端点检测代码重写
  • C#读取或设置ScrollLock
  • 判断客户端设备
  • 大整数算法[10] Comba乘法(实现)
  • jconsole监控tomcat
  • RESTClient 工具
  • serv-u启动管理控制台后提示脚本错误解决方案
  • 策略模式(Strategy)、枚举策略模式
  • Intergate flot with Angular js ——Angular 图形报表
  • UML序列图总结(转)
  • Hibernate(2)
  • 数据结构 枚举学习笔记
  • PIX防火墙基本特性:失效处理机制和冗余-原理与实验
  • Mantis1.2.19 在Windows 平台上的安装配置详解
  • sql回滚
  • F5刷新的时候只刷新里面的内联框架里面的页面
  • property中的strong 、weak、copy 、assign 、retain 、unsaf
  • 【iOS】Web Color 的 Swift 实现
  • centos7忘记root密码,重置
  • Linux上安装使用SSH(ubunturedhat)
  • 删除root 家目录,及恢复方法
  • PHP 多维数组转换一维数组
  • memcached-session-manager配置
  • linux中配置vsftpd
  • 最近一段学java
  • winform 控件没有Cursor属性时的处理办法
  • B/S VS C/S
  • php ckeditor图片上传
  • 转iOS逆向工程:Reveal查看任意app的高级技巧!
  • tar 包解压命令
  • 团队进展报告(1)
  • MikroTik RouterOS 3.30 安装+免SSH全自动算号+自动注册L6图文全过程
  • 浙大研究生hadoop工作分享
  • 函数指针简单了解
  • IBM核心软件如何应对“互联网+”的技术挑战
  • 一个很小的 截图 库。 只需要依赖 jQuery
  • Ffplay视频播放流程
  • tomcat设置JAVA_OPTS
  • UIKit 框架之UIAlertController
  • Emacs 配置 Python 编程环境
  • 简单之美 | ZooKeeper应用案例
  • angularjs学习:通信
  • LoadRunner场景参数文件部分参数说明
  • SaltStack Runners
  • ubuntu 系统学习
  • Matlab命令系列之目录操作
  • ESXI5.5设置主机的时间自动同步服务 NTP
  • Oracle导入导出之dmp
  • zabbix server is not running解决办法
  • 查看 OS
  • 黄聪:wordpress如何添加自定义文章快速编辑按钮
  • 【吾日三省吾身】2015.6.07-涅槃行动第二十天
  • 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充
  • tar命令打包并删除原文件
  • iOS pragma mark的用法
  • java 重定向和转发的区别
  • c 语言文本文件判断是否到达结尾的问题
  • 十五天精通WCF——第四天 你一定要明白的通信单元Message
  • 杭电2098--分拆素数和
  • 分布式,去中心化,协作性,可适应性
  • 检查版本是否需要更新的Demo
  • TFS 2010 使安装更容易,让VSS历史
  • Unity3D研究院之Prefab里面的Prefab关联问题
  • 在windows下如何批量转换pvr,ccz为png或jpg
  • 架构师速成5-小学
  • java语言之数组-----选择排序
  • Linux搭建Zabbix监控服务
  • linux 之 sed
  • linux 查看所有存在的线程
  • JDK版本更换后编译android系统出错
  • TI AM335x Linux MUX hacking
  • 【PLSQL】过程procedure形参和参数
  • 使用nohup让程序在远程主机后台运行
  • mongodb数据结构学习1--增删改查
  • 易宝典文章——玩转Office 365中的Exchange Online服务 之十一 怎样在Exchange Online中配置邮件传递限制...
  • uva 11991 - Easy Problem from Rujia Liu?(STL)
  • c#里listview里如何获取点击的是哪一列
  • netbeans-xdebug 断点调试php
  • JAVA JDBC常见面试题及答案
  • 我的博客css得到别人的认可
  • PHIL2650 是个好课程
  • 能够做到这10点,成功将离你不远
  • 多媒体封装格式的比较
  • 创业相关
  • Nagios 监控twemproxy
  • 也谈怎么学好英语这件小事(转)
  • (1)Zabbix2.4.5 安装配置
  • 后海日记(11)
  • 使用Eclipse中提供的Refactor(重构)工具
  • Servlet初步认识(一)
  • 思达BI软件StyleIntelligence实例教程—柱状数据对比分析图
  • OPENCV与OPENCL
  • 第5章分布式系统模式 Broker(代理程序)
  • 在浏览器中将表格导入到本地的EXCEL文件,注意控制内存
  • WCF技术剖析之四:基于IIS的WCF服务寄宿(Hosting)实现揭秘
  • Js中的window.parent ,window.top,window.self详解
  • atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
  • 关于使用,NI采集卡+labview信号采集,问题交流【第二贴】
  • javascript 日期时间函数(经典+完善+实用)
  • ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
  • Android Application.java以及它的作用
  • linux下的man和info命令
  • Android典型界面设计——ViewPage+Fragment实现区域顶部tab滑动切换
  • 问题-关于 in []使用过程中报错 Constant expression violates subrange bounds
  • Express 4.x Node.js的Web框架----《转载》
  • REHL 5.4 下编译安装LNMP(上)
  • 树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
  • LNMP架构的优化
  • VBS中Sub与Function的区别[资料]
  • IOS中延时执行的几种方式的比较和汇总
  • 安全圈现状总结
  • 【转】JVM介绍
  • ThreadPoolExecutor使用和思考-线程池大小设置与BlockingQueue的三种
  • 【面试题】一个号称BAT算法题
  • linux 命令行修改root密码
  • The app references non-public selectors in payload With Xcode6.1
  • 微软MSDN订阅用户已可提前手工下载Windows 10安装包
  • linux c 笔记 线程控制(一)
  • Docker 数据管理
  • Mongoose学习参考文档
  • 2015 多校联赛 ——HDU5302(矩阵快速幂)
  • HTML5未来展望
  • Autofac 依赖注入框架 使用
  • 风“云”大会,创新突围
  • google appid申请
  • 配置ISCSI
  • OpenID协议
  • mysql 判断指定条件数据存不存在,不存在则插入
  • AJAX中get与post区别
  • Android中使用响应式编程RxJava
  • Scut游戏server引擎Unity3d访问
  • SQL Server 常用高级语法笔记
  • Excel与SqlServer的导入导出问题总结
  • 关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法
  • Nginx 的了解
  • 安卓飞机大战(六) 动态Gif图的添加
  • Layout Management
  • [转精]IO_STACK_LOCATION与IRP的一点笔记
  • CODEVS 3657 括号序列
  • hdu 5178 pairs (线性探查问题)
  • java远程调试
  • 谁让APP工程师产生了泡沫?
  • Codeforces Gym 100338B Spam Filter 字符串哈希+贝叶斯公式
  • linux网络编程学习笔记之四 -----多-threaded服务器
  • 学习date , clock , hwclork , cal, ls ,cd , pwd, tty, whereis , which ,stat, e
  • 64位Oracle 11g 使用PL/SQL
  • 内存管理机制剖析
  • 将html导出到excel或word
  • poj1511 最短路
  • 文本框删格线
  • 网络安全论坛一览
  • poj2236 并查集
  • C#中的多线程 - 基础知识 z
  • 基于HT for Web的3D树的实现
  • 水位传感器
  • 甲骨文解雇Java相关人员 Oracle cuts Java execs
  • 21SkypeForBusiness2015进阶篇--SFB后端Mirror切换到AllwaysOn--标准版准备篇
  • MFC双缓冲
  • 一种单片机支持WiFi的应用——SimpleWiFi在单片机中的应用
  • 整合hibernate4到spring4mvc框架
  • sql语句:CASE WHEN END 的用法
  • 【springmvc+mybatis项目实战】杰信商贸-14.购销合同添加+修改+删除+查看
  • 【C/C++学院】0805-语音识别控制QQ/语音控制游戏
  • ASA防火墙IPSEC ***配置
  • 汉高澳大利亚sinox2014电影播放flash最好的办法是安装游戏windows文本firefox
  • 将两个(或多个)Item建立关联 app_field.set_dependent_field和app_field.clear_dependent_fields...
  • ejb 远程调用
  • Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  • raspberry pi2 智能小车源码及测试视频
  • jquery常用遍历循环处理
  • DRBD安装编译后: modprobe drdb FATAL: Module drdb not found
  • Linux初学者需了解的知识
  • spring + mybatis + 多数据源整合事务
  • iOS数据持久化-OC
  • 查询时间转换成短格式
  • webuploader插件使用分析
  • Notepad++ 安装 Zen Coding / Emmet 插件