如何将字符串中的子字符串替换为给定的字符串? strtr()函数是PHP中的内置函数,用于将字符串中的子字符串替换为给定的字符串。...该函数返回已转换的字符串;如果from和to参数的长度不同,则会被格式化为最短的长度;如果array参数包含一个空字符串的键名,则返回FALSE。 php strtr()函数怎么用?...规定要转换的字符串。 ● from:必需(除非使用数组)。规定要改变的字符(或子字符串)。 ● to:必需(除非使用数组)。规定要改变为的字符(或字符串)。...一个数组,其中的键名是原始字符,键值是目标字符。 返回值 返回已转换的字符串。...如果 from 和 to 参数的长度不同,则会被格式化为最短的长度;如果 array 参数包含一个空字符串("")的键名,则返回 FALSE。
尽量避免在 where 子语句中有 where num is null,这样不用索引,要全表扫描,可用 0 代替 null 避免在 where 中用or!...=,因为要全表扫描 尽量避免在 where 中用 or,因为若一个字段有索引,一个没有,则要全表扫描 like”%abc%”,全表扫描 避免在 where 子语句中对字段进行函数操作,因为要全表扫描 使用复合索引时...由于id定义为无符号类型,所以直接终止了查询,并无读取任何数据 对in()条件进行优化 对in列表的元素先进行排序,再通过二分查找确定 3.4 确定查询处理各个阶段所消耗的时间 3.4.1使用...profile set profile = 1; 启动profiel,这是一个会话级别的配置 执行查询 show profiles;查看每一个查询所消耗的总时间的信息 show profile for...query N;查询每个阶段所消耗的时间N为queryId ?
,这个存储函数会返回一个长度为参数n的随机字符串: 此代码由Java架构师必看网-架构君整理 delimiter $$ create function rand_string(n INT) returns...这是SELECT的查询序列号; 2、select_type:查询类型,主要有PRIMARY(子查询中最外层查询)、SUBQUERY(子查询内层第一个SELECT)、UNION(UNION语句中第二个...这样,通过"explain select * from emp where empno=413345\G"命令的输出,我们就可以清楚的看到,这条查询语句是一个全表扫描语句,查询时没有用到任何索引,所以它的查询时间肯定会很慢...explain命令用于查看命令执行计划外,还提供了profiling工具用于查看语句查询过程中的资源消耗情况。...cpu和Block IO的消耗,这样我们就可以更有针对性的优化查询语句了。
经常会有人用字符串存储日期型的数据(不正确的做法): 缺点1:无法用日期函数进行计算和比较 缺点2:用字符串存储日期要占用更多的空间 6、同财务相关的金额类数据必须使用decimal类型 1、非精准浮点...通常子查询在in子句中,且子查询中为简单SQL(不包含union、group by、order by、limit从句)时,才可以把子查询转化为关联查询进行优化。...,其对查询性能的影响也就越大; 3、由于子查询会产生大量的临时表也没有索引,所以会消耗过多的CPU和IO资源,产生大量的慢查询。...,就会消耗大量的CPU和IO及内存资源。...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。
禁止使用 SELECT * 必须使用 SELECT 查询 消耗更多的 CPU 和 IO 以网络带宽资源 无法使用覆盖索引 可减少表结构变更带来的影响 7....避免使用子查询,可以把子查询优化为 join 操作 通常子查询在 in 子句中,且子查询中为简单 SQL(不包含 union、group by、order by、limit 从句) 时,才可以把子查询转化为关联查询进行优化...特别是对于返回结果集比较大的子查询,其对查询性能的影响也就越大。 由于子查询会产生大量的临时表也没有索引,所以会消耗过多的 CPU 和 IO 资源,产生大量的慢查询。 9....,如果满足条件的数据集非常大,就会消耗大量的 CPU 和 IO 及内存资源。...WHERE 从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引 不推荐:where date(create_time) = '20190101' 推荐:where create_time
其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 对磁盘,网络或其他I/O设备的输入/输出(I/O)操作。...使用列名意味着将减少消耗时间。 2,避免产生笛卡尔积 含有多表的sql语句,必须指明各表的连接条件,以避免产生笛卡尔积。N个表连接需要N-1个连接条件。...排序是一种昂贵的操作,在一秒钟执行成千上万次的sql语句中,如果带有排序操作,往往会消耗大量的系统资源,性能低下。索引是一种有序结果,如果order by后面的字段上建有索引,将会大大提升效率!...11,避免对列的操作 不要在where条件中对字段进行数学表达式运算,任何对列的操作都可能导致全表扫描,这里所谓的操作,包括数据库函数,计算表达式等等,查询时要尽可能将操作移到等式的右边,甚至去掉函数。...例如:下列sql条件语句中的列都建有恰当的索引,但几十万条数据下已经执行非常慢了: select * from record where amount/30时间11s) 由于where
TIMESTAMP 占用4字节和INT相同,但可读性比INT 类型的高,若是超出TIMESTAMP 取值范围的则使用DATETIME 类型存储; 用字符串类型存储时间的缺点:无法使用日期函数进行比较计算...4、杜绝使用SELECT * ,必须使用SELECT 查询 因为使用SELECT * 查询会消耗更多的CPU、IO和网络宽带资源,并且查询时无法使用覆盖索引。...into table_name('c1','c2','c3') values ('1','2','3'); 6、避免使用子查询,可以把子查询优化为join 关联操作 但是,通常子查询在in 子句中,且子查询中为简单...,不论是内存临时表还是磁盘临时表都不会存在索引,所以查询性能会受到一定的影响; 2)由于子查询会产生大量的临时表也没有索引,所以会消耗过多的CPU和IO资源,产生大量的慢查询。...9、禁止使用order by rand() 进行随机排序 10、禁止在WHERE 从句中对列进行函数转换和计算 因为在WHERE 从句中对列进行函数转换或计算时会导致索引无法使用。
TIMESTAMP 占用4字节和INT相同,但可读性比INT 类型的高,若是超出TIMESTAMP 取值范围的则使用DATETIME 类型存储; 用字符串类型存储时间的缺点:无法使用日期函数进行比较计算...4、杜绝使用SELECT * ,必须使用SELECT 查询 因为使用SELECT * 查询会消耗更多的CPU、IO和网络宽带资源,并且查询时无法使用覆盖索引。...('c1','c2','c3') values ('1','2','3'); 6、避免使用子查询,可以把子查询优化为join 关联操作 但是,通常子查询在in 子句中,且子查询中为简单SQL(即不包含union...,所以查询性能会受到一定的影响; 由于子查询会产生大量的临时表也没有索引,所以会消耗过多的CPU和IO资源,产生大量的慢查询。...9、禁止使用order by rand() 进行随机排序 10、禁止在WHERE 从句中对列进行函数转换和计算 因为在WHERE 从句中对列进行函数转换或计算时会导致索引无法使用。
尽量避免连接,可以分开连接或者使用不作用在列上的函数替代。 8.如果索引不是基于函数的,那么当在Where子句中对索引列使用函数时,索引不再起作用。...13.Oracle从下到上处理Where子句中多个查询条件,所以表连接语句应写在其他Where条件前,可以过滤掉最大数量记录的条件必须写在Where子句的末尾。...16.当在Sql语句中连接多个表时,使用表的别名,并将之作为每列的前缀。这样可以减少解析时间。...我们可以总结一下可能引起全表扫描的操作: 1.在索引列上使用NOT或者“”; 2.对索引列使用函数或者计算; 3.NOT IN操作; 4.通配符位于查询字符串的第一个字符; 5.IS NULL或者IS...Oracle的优化器有两种优化方式:基于规则的(RBO)和基于代价的(CBO)。 2.RBO:优化器遵循Oracle内部预定的规则。 3.CBO:依据语句执行的代价,主要指对CPU和内存的占用。
使用 select * 取出全部列,会让优化器无法完成索引覆盖扫描这类优化,会影响优化器对执行计划的选择,也会增加网络带宽消耗,更会带来额外的 I/O,内存和 CPU 消耗。...④使用表的别名 当在 SQL 语句中连接多个表时,请使用表的别名并把别名前缀于每个列名上。这样就可以减少解析的时间并减少哪些友列名歧义引起的语法错误。...HAVING 中的条件一般用于聚合函数的过滤,除此之外,应该将条件写在 where 字句中。 where 和 having 的区别:where 后面不能使用组函数。...减少锁表时间特别是使用 MyISAM 存储引擎的表。 可以使用多核 CPU。...数据访问开销=索引 IO+索引分页后结果(例子中是 15 行)对应的表数据 IO。因此,该写法每次翻页消耗的资源和时间都基本相同,就像翻第一页一样。
使用select * 取出全部列,会让优化器无法完成索引覆盖扫描这类优化,会影响优化器对执行计划的选择,也会增加网络带宽消耗,更会带来额外的I/O,内存和CPU消耗。...使用表的别名 当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个列名上。这样就可以减少解析的时间并减少哪些友列名歧义引起的语法错误。 5....HAVING中的条件一般用于聚合函数的过滤,除此之外,应该将条件写在where字句中。...where和having的区别:where后面不能使用组函数 6.调整Where字句中的连接顺序 MySQL采用从左往右,自上而下的顺序解析where子句。...数据访问开销=索引IO+索引分页后结果(例子中是15行)对应的表数据IO。因此,该写法每次翻页消耗的资源和时间都基本相同,就像翻第一页一样。
B ON A.num = B.num --不会造成全表扫描 1.3.6,:where子句中对字段进行表达式操作的优化 不要在where子句中的“=”左边进行函数、算数运算或其他表达式运算...BY RAND()命令,这个会消耗处理器的处理能力。...,加大资源消耗及延迟。...如: select id from t where num/2=100 应改为: select id from t where num=100*2 7、尽量避免在where子句中对字段进行函数操作...8、不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
经常会有人用字符串存储日期型的数据(不正确的做法): · 缺点1:无法用日期函数进行计算和比较 · 缺点2:用字符串存储日期要占用更多的空间 6、同财务相关的金额类数据必须使用decimal类型 · 非精准浮点...通常子查询在in子句中,且子查询中为简单SQL(不包含union、group by、order by、limit从句)时,才可以把子查询转化为关联查询进行优化。...,其对查询性能的影响也就越大; · 由于子查询会产生大量的临时表也没有索引,所以会消耗过多的CPU和IO资源,产生大量的慢查询。...,就会消耗大量的CPU和IO及内存资源。...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。 · 不推荐: ? · 推荐: ?
经常会有人用字符串存储日期型的数据(不正确的做法): · 缺点1:无法用日期函数进行计算和比较 · 缺点2:用字符串存储日期要占用更多的空间 6、同财务相关的金额类数据必须使用decimal类型 · 非精准浮点...通常子查询在in子句中,且子查询中为简单SQL(不包含union、group by、order by、limit从句)时,才可以把子查询转化为关联查询进行优化。...,其对查询性能的影响也就越大; · 由于子查询会产生大量的临时表也没有索引,所以会消耗过多的CPU和IO资源,产生大量的慢查询。...,就会消耗大量的CPU和IO及内存资源。...推荐在程序中获取一个随机值,然后从数据库中获取数据的方式 13、WHERE从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引。
From …where … ---- ADB优化器 ADB查询优化器—数百优化规则 基础优化规则 裁剪规则:列裁剪、分区裁剪、子查询裁剪 下推/合并规则:谓词下推、函数下推、聚合下推、Limit下推...disableIndex 参考原则: 只会出现在select子句中,不会在where子句中使用情况 CREATE TABLE f_fskt_orderown ( id varchar COMMENT...利用维度表避免数据在分区键Shuffle 尽量避免LEFT JOIN 避免含有聚合运算的子查询 避免在列上添加函数导致索引失效: 索引和扫描选择 默认查询都走索引,但是走索引检索在下面的几种情况下...如下SQL: 图片 子查询使用 对于子查询,ADB会首先执行子查询,并将子查询的结果保存在内存中,然后将该子查询作为一个逻辑表,执行条件筛选。由于子查询没有索引,所有条件筛选走扫描。...时间戳 基于标签的查询推荐使用 多值列(multivalue) 常见将字符串转换为数值类型方法 包含字符前缀或后缀,例如E12345,E12346等。
) •缺点 1:无法用日期函数进行计算和比较•缺点 2:用字符串存储日期要占用更多的空间 6....避免使用子查询,可以把子查询优化为 join 操作 通常子查询在 in 子句中,且子查询中为简单 SQL(不包含 union、group by、order by、limit 从句) 时,才可以把子查询转化为关联查询进行优化...特别是对于返回结果集比较大的子查询,其对查询性能的影响也就越大。 由于子查询会产生大量的临时表也没有索引,所以会消耗过多的 CPU 和 IO 资源,产生大量的慢查询。 9....,如果满足条件的数据集非常大,就会消耗大量的 CPU 和 IO 及内存资源。...WHERE 从句中禁止对列进行函数转换和计算 对列进行函数转换或计算时会导致无法使用索引 不推荐: where date(create_time)='20190101' 推荐: where create_time
领取专属 10元无门槛券
手把手带您无忧上云