深入mysql基础知识的详解

 更新时间:2013年06月06日 10:02:32   作者:  
本篇文章是对mysql基础知识进行了详细的分析介绍,需要的朋友参考下

1.每个客户端连接都会从服务器进程中分到一个属于它的线程。而该连接的相应查询都都会通过该线程处理。

2.服务器会缓存线程。因此并不会为每个新连接创建或者销毁线程。

3.当发起对MySQL服务器的连接时,服务器会对 username,host,password进行验证。而一旦连接上,服务器就会检测其权限。

4.MySQL查询缓存只会保存 SELECT 语句和相应的结果。在解析查询之前会询问查询缓存,如果查询缓存中能找到相应的结果就直接返回结果。

5.MySQL的 data 文件夹下会根据每个数据库建立一个相应名称的文件夹。而每一张表对应的有三个不同后缀的文件:.frm,.MYD,.MYI。其中 .frm 后缀的文件用来存储表的定义。.MYD(mysql data)存储的是数据,而.MYI(mysql index)存储的是索引。

6.关于IP的存储类型选择。别再使用 varchar(15) 了,应该使用 INT UNSIGNED。而且最好是使用PHP的内置函数ip2long()和 long2ip() 来处理,而不是使用 MySQL 的函数 INET_ATON() 和 INET_NTOA()。尽可能地将计算和转换之类的东西交给程序来完成。存储为 INT 不仅节省了空间,而且利于查询。比如我想要查询出某个IP段的所有IP,varchar 是没办法进行的。

7. B+Tree 索引保存数据的顺序和建表时的字段顺序一致。InnoDB会自动在内存中为一些被频繁访问的索引值建立内存索引以加快速度。

8.以下查询会引起索引失效:

复制代码 代码如下:

SELECT name FROM user WHERE id+1=4;    // mysql不会从计算中去分析出id是有索引的
SELECT name FROM user WHERE TO_DAYS(birth) > 20;    // mysql索引的是birth本身,而不是TO_DAYS()转化之后的数据

1.复制表结构
CREATE TABLE b LIKE a;

2.更改存储引擎
ALTER TABLE a ENGINE=InnoDB;

3.复制表数据
INSERT INTO b SELECT * FROM a;

4.获取表信息
SHOW TABLE STATUS LIKE '%XXX%';   // 获取表名符合LIKE的表信息。
SHOW TABLE STATUS FROM `数据库名`;   // 获取该数据库下所有表的信息

5.清空二进制日志
RESET MASTER;

6.返回某字段前X个字符
SELECT LEFT(name, 3) AS pre_name FROM user;

7.为某字段添加前缀索引
ALERT TABLE xxx ADD KEY (name(3));

8.避免读取不必要的行,使用索引覆盖查询
SELECT * FROM JOIN (SELECT prod_id FROM products WHERE actor='SEAN CARREY' AND
title LIKE '%APOLLO%') AS t ON (t.prod_id=products.prod_id); // 其中actor有索引

相关文章

  • MySQL学习之SQL语法及SQL解析顺序

    MySQL学习之SQL语法及SQL解析顺序

    这篇文章主要介绍了SQL语法及SQL解析顺序,SQL(Structured Query Language)是一种标准,作为一种访问关系型数据库的标准语言,感兴趣的小伙伴可以借鉴阅读
    2023-03-03
  • 详解mysql中的concat相关函数

    详解mysql中的concat相关函数

    这篇文章主要介绍了mysql中的concat相关函数,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 解析Mysql备份与恢复简单总结与tee命令的使用介绍

    解析Mysql备份与恢复简单总结与tee命令的使用介绍

    本篇文章是对Mysql备份与恢复简单总结与tee命令的使用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • mysql如何比对两个数据库表结构的方法

    mysql如何比对两个数据库表结构的方法

    这篇文章主要介绍了mysql如何比对两个数据库表结构的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 在MySQL数据库中使用C执行SQL语句的方法

    在MySQL数据库中使用C执行SQL语句的方法

    与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C、C++、Java和Perl。从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句。
    2012-10-10
  • MySQL数值类型溢出的处理方法

    MySQL数值类型溢出的处理方法

    这篇文章主要给大家介绍了关于MySQL数值类型溢出的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • mysql处理海量数据时的一些优化查询速度方法

    mysql处理海量数据时的一些优化查询速度方法

    最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法,需要的朋友可以参考下
    2017-04-04
  • mysql5.7创建用户授权删除用户撤销授权

    mysql5.7创建用户授权删除用户撤销授权

    这篇文章主要介绍了mysql5.7创建用户授权删除用户撤销授权的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 深入分析MySQL Sending data查询慢问题

    深入分析MySQL Sending data查询慢问题

    给大家深入分析一下MySQL Sending data表查询慢的问题,并给出了详细的解决方案,一起来参考下。
    2017-12-12
  • MySQL8.0数据库开窗函数图文详解

    MySQL8.0数据库开窗函数图文详解

    开窗函数为将要被操作的行的集合定义一个窗口,它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列,这篇文章主要给大家介绍了关于MySQL8.0数据库开窗函数的相关资料,需要的朋友可以参考下
    2023-06-06

最新评论