您的位置:首页 > 数据库 > MySQL

MYSQL常用技术及SQL索引-存储优化

2013-09-08 20:37 701 查看
忘记MYSQL密码怎么?

1 . 修改my.ini 文件,在文件中添加 skip-grand-tables 。 登录时无需密码

2 update mysql.user set password = password(“1234”);

flush privileges; // 或 重启服务器

3. 修改my.ini去掉 skip-grand-tables

如何让MYSQL被所有的访问?

修改mysql.user 的host字段,可以设置为

%: 所有人都能访问

192.168.1

192.168.1.2

mysql支持常用的引擎?

MyISAM :

1. 速度快

2. 表级锁定

3. 支持全文索引(fulltext),只支持英文

4. 外键:没有具体的作用只是声明一下。

5. xxx.frm : 表结构

xxx.MYD: 数据

xxx.MYI : 索引

InnoDB (默认引擎):

1. 配置好了一样快

2. 行级锁定

3. 支持事务

4. 外键,级联完整性

5. 一张一个文件:比较大

heap/memory : 内存表

优点:速度快

缺点:重启表及数据就没有了。

如何分析一条SQL语句的性能?

使用 explain/desc 命令

如何判断两段php代码的性能?

function get_time()

{

$time = microtime();

$time = explode(' ', $time);

return (float)($time[1] + $time[0]);

}

什么情况下不使用索引?

有一张表user,有a,b,c,d字段,然后 a,b上有两个索引

SELECT * FROM user WHERE a =1 AND c=2 à 会

SELECT * FROM user WHERE a =1 OR c=2 à 不会

SELECT * FROM user WHERE a LIKE ‘%abc%’ à 不会

SELECT * FROM user WHERE a LIKE ‘abc%’ à 会

联合索引的使用情况: index a_b(a,b,c)

SELECT * FROM user WHERE a = 1 à 会

SELECT * FROM user WHERE a = 1 AND b=1à 会

SELECT * FROM user WHERE b = 1 à 不会

SELECT * FROM user WHERE b = 1 AND c=1 à 不会

建索引时要考虑:

select 为主还是以insert为主。

MYSQL中的日志?

普通日志:

错误日志:

bin(二进制)日志 : 记录下:insert,update,grant,delete等会修改数据库的SQL语句

慢日志 : 可以设置一个时间,然后MYSQL服务器会记录下慢于这外时间的SQL语句

signed与unsigned?以及int 系列类型的大小。

tinyint : signed -128 ~ 127 unsigned 0 ~ 255

smallint : singed ~ 32678 – 32767 unsged 0 ~ 65535

mediumint : 千万

int : 十亿

age tinyint unsigned à -99 ~ 99

gender tinyint(1) unsigned,

varchar 和 char 有什么区别?

char : 0~255

varchar : 0~65535

char(10) 如果我存 abc 实际占用硬盘10个字符 ,  更快一些

使用情况:如果字符比较短,而且字符的长度时char如,

ip char(15)

password char(32)

varchar(10) 如果我存 abc\0 实际战胜硬盘 4 个字符, 慢一点

一个字符“汉”,对应字节: gbk/gb2312: 2字节 utf8:字节

设计数据表时,有哪些表间关系?如何判断?

1:1

1:N

N:N
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: