mysql函数

MySQL 优化

≡放荡痞女 提交于 2019-12-05 02:30:05
MySQL 优化 表关联查询时务必遵循 小表驱动大表 原则; 使用查询语句 where 条件时,不允许出现 函数 ,否则索引会失效; 使用单表查询时,相同字段尽量不要用 OR ,因为可能导致索引失效 ,可以使用 UNION 替代; LIKE 语句不允许使用 % 开头,否则索引会失效; 组合索引一定要遵循 从左到右 原则,否则索引会失效; 索引不宜过多,根据实际情况决定,尽量不要超过 10 个; 每张表都必须有 主键 ,达到加快查询效率的目的; 分表,可根据业务字段尾数中的个位或十位或百位(以此类推)做表名达到分表的目的; 分库,可根据业务字段尾数中的个位或十位或百位(以此类推)做库名达到分库的目的; 表分区,类似于硬盘分区,可以将某个时间段的数据放在分区里,加快查询速度,可以配合 分表 + 表分区 结合使用; # 神器 EXPLAIN 语句 EXPLAIN 显示了 MySQL 如何使用索引来处理 SELECT 语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在 SELECT 语句前加上 EXPLAIN 即可,如: EXPLAIN SELECT * FROM tb_item WHERE cid IN (SELECT id FROM tb_item_cat) id: SELECT 识别符。这是 SELECT 的查询序列号 select_type:

左右值无限分类实现算法

巧了我就是萌 提交于 2019-12-05 02:18:04
一、引言 产 品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常是关系型 数据库,它能够保存大量的数据,提供高效的数据检索和更新服务。然而关系型数据的基本形式是纵横交错的表,是一个平面的结构,如果要将多级树状结构存储在 关系型数据库里就需要进行合理的翻译工作。接下来我会将自己的所见所闻和一些实用的经验和大家探讨一下: 层级结构的数据保存在平面的数据库中基本上有两种常用设计方法: * 毗邻目录模式(adjacency list model) * 预排序遍历树算法(modified preorder tree traversal algorithm) 我不是计算机专业的,也没有学过什么数据结构的东西,所以这两个名字都是我自己按照字面的意思翻的,如果说错了还请多多指教。这两个东西听着好像很吓人,其实非常容易理解。 二、模型 这里我用一个简单食品目录作为我们的示例数据。 我们的数据结构是这样的,以下是代码: Food | |---Fruit | | | |---Red | | | | | |--Cherry | | | +---Yellow | | | +--Banana | +---Meat |--Beef +--Pork 复制代码 为了照顾那些英文一塌糊涂的PHP爱好者 Food : 食物 Fruit

mysql-函数/事务

自古美人都是妖i 提交于 2019-12-04 23:43:45
函数和存储过程 ###函数 delimiter $ create function 函数名(形参1 类型1,形参2 类型2...) returns 返回类型   #-- 注意是retruns begin set @val=函数体;    #-- 函数语句集,set @val 定义变量 return val; end $ delimiter ; select 函数名(参数); # 调用 ###过程 delimiter $$ create procedure st(过程类型 参数1 参数类型1,...) begin select name,age from class_1; select name,score from class_1 order by score desc; end $$ delimiter ; call st(); 过程类型:in 可接收参数据 out可外传数据 inout 可接可外传 ###删除 DROP PROCEDURE /FUNCTION [IF EXISTS] sp_name; ##事务 begin; 开启 commit;提交 rollback;回退 特点: 1.原子性 一个事务是完整整体,要么全部执行,要么全部不执行 2.一致性 数据库总是从一个一致性的状态转换到另一个一致性的状态 3.隔离性 一个事务没有提交前,其他事务不可见 4.永久性 提交之后

mysql中字符串的隐藏字符处理

岁酱吖の 提交于 2019-12-04 21:17:48
三步解决mysql字符串的隐藏字符: 1. 隐藏字符导致字符串长度边长,用mysql 自带的 Hex函数让隐藏字符显示真身, 2. 可以拿到隐藏字符的16进制码,然后用windows自带的计算器转化成 十进制数 3. 最后,执行 update user set mobile = REPLACE(mobile, char(49824),''); 完美去掉隐藏字符 来源: https://www.cnblogs.com/beyang/p/11884488.html

Mysql日志管理

孤街浪徒 提交于 2019-12-04 21:03:43
错误日志 查询日志 慢查询日志 二进制日志 toc error log 错误日志 记录mysql启停错误信息用于排错 general log 普通日志 记录客户端查询日志用于开发 bin log 二进制日志 增量备份 DDL DML DCL 用于备份 relay log 中继日志 接收 replication master 常用于主从复制 slow log 慢查询日志 查询时间超过指定值用于调优 错误日志 Mysql 的错误日志 error log 记录 mysqld 服务进程启动/关闭或运行过遇到的错误日志。 错误日志默认开启(没有开启按照如下方式开启) ## 在配置文件 [mysqld] 标签内增加 log-error=/log/mysql/err.log [root@Mysql ~]# vim /etc/my.cnf [mysqld] ...... log-error=/log/mysql/err.log ## 创建对应目录与日志文件 [root@Mysql ~]# mkdir -p /log/mysql/ [root@Mysql ~]# touch /log/mysql/err.log ## 更改日志文件属主和属组为 mysql [root@Mysql ~]# chown -R mysql.mysql /log/mysql/err.log ## 重启数据库生效 [root

php-ini

妖精的绣舞 提交于 2019-12-04 20:55:07
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。在命令行模式下,php.ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号';'开始的行被简单地忽略(就象你可能猜到的一样)。 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能有某种的意义。 ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* - foo=bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量中的一个 (On, Off, True, False, Yes, No and None) ,或是一个表达式(如: E

mysql数据库(四)限制查询-limit.

柔情痞子 提交于 2019-12-04 20:04:17
limit属于mysql的内置函数,能够返回特定行号或行数的数据 常用语法 limit m,n;    #意思是从m+1行开始,返回n行。或者返回m行后的n行 #返回0行之后的两行,不包括0行 select * from info_duty limit 0,2; #从第三行开始,返回2行 select * from info_duty limit 2,2; 如果只有一个参数,则表示从第一行开始返回n行 #从第一行开始返回两行,相当于limit 0,2 select * from info_duty limit 2; 来源: https://www.cnblogs.com/maohai-kdg/p/11880950.html

php和mysql 字符长度总结(转)

只谈情不闲聊 提交于 2019-12-04 19:02:15
只适用mysql5.0以上的版本: 1.一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节 2 .varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符 ,仅是实际字节长度有所区别 3.MySQL检查长度,可用SQL语言: select LENGTH(fieldname) from tablename 来查看 LENGTH 输出的结果是 字符实际长度的! 而 CHAR_LENGTH输出的则是屏蔽了字符存储细节,是实际的字符个数! =========华丽丽分隔线,转载如下:========== 涉及到了字符长度问题,搜索了一下,几乎千篇一律, 所以决定自己测试一下,彻底弄清楚字符长度问题. 编码一律为 UTF-8 编码 : 先来测试一下 php 把一个汉字认作几个字节: <?php header(‘Content-Type:text/html;charset=UTF-8′); $str=’我’; echo strlen($str); ?> 输出 3 , 证明在 UTF-8编码下, 一个汉字被认作3个字节长度. 而如果我们用 php 多字节扩展函数 mb_strlen($str,’utf8′); 这个时候输出 1 下面来测试一下 mysql char 和 varchar 字节长度. 创建一个数据库 (txt) :

PHP操作 二维数组模拟mysql函数

泄露秘密 提交于 2019-12-04 16:14:40
PHP操作 二维数组模拟mysql函数 <pre> public function monimysqltest(){ $testarray=array( array('ss'=>'1','dd'=>'11'), array('ss'=>'2','dd'=>'22'), array('ss'=>'3','dd'=>'33'), array('ss'=>'4','dd'=>'44'), ); $sa=$this->arrayfilter($testarray,'ss',array(3,4)); echo'模拟where<br>'; print_r($sa); echo'<br>'; $array[] = array('id'=>1,'price'=>50); $array[] = array('id'=>2,'price'=>70); $array[] = array('id'=>3,'price'=>50); $array[] = array('id'=>4,'price'=>20); $arre=$this->arraysort($array,'price',SORT_DESC); echo'模拟orderby<br>'; print_r($arre); echo'</br>'; $aa = array( array('id' => 123, 'name' => '张三'),