MYSQL索引建立需要注意以下几点细节

1.建立索引的时机:若表中的某字段出现在select、过滤、排序条件中,为该字段建立索引是值得的。

2.对于like '%xxx'的模糊查询,普通的索引是无法满足的,需要建立全文索引。

3.对于有多个条件的,比如: "...where a=xxx and b=yyy","...where a=xxx order by b","...where a=xxx group by b"。需要使用组合索引。但是组合索引只能在SQL语句中满足"最左前缀"的条件下使用。且组合索引有一些副作用,如索引尺寸可能比数据本身大,因为组合索引的组合条目多。所以在实际应用中,要量身定做,使用慢查询分析工具分析。

4.开启索引缓存,直接在内存中查找索引,不用再磁盘中。

5.建立索引是有代价的,当update、delete语句执行时,会使得索引更新,将耗掉更多的时间。可以使用mysqlreport报告,了解select、update、delete、insert、replace各语句所占的百分比。

(0)

相关推荐

  • linux下mysql提示"mysql deamon failed to start"错误的解决方法

    有台linux服务器,系统为centos系统. 网站突然连接不上数据库,于是朋友直接重启了一下服务器.进到cli模式下,执行 service myqsld start 发现还是提示"mysql deamon failed to start"错误信息. # /etc/init.d/mysqld start MySQL Daemon failed to start. Starting mysqld: [FAILED] 查看mysqld的log文件 #less /var/log/mysqld

  • MySQL表字段设置默认值(图文教程及注意细节)

    环境 MySQL 5.1 + 命令行工具 问题 MySQL表字段设置默认值 解决 复制代码 代码如下: --SQL: CREATE TABLE test( i_a int NOT NULL DEFAULT 1, ts_b timestamp NOT NULL DEFAULT NOW(), c_c char(2) NOT NULL DEFAULT '1' ); --以下SQL不合法 --time_d time NOT NULL DEFAULT CURTIME(), --date_e date NO

  • MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can't connect to local MySQL server through socket,即无法通过socket连接到mysql服务器,同时提供了socket文件的位置.下面是这个问题的描述与解决办法. 1.故障现象 复制代码 代码如下: [root@SZDB mysqldata]# mysql -uroot -p123456 Warning: U

  • 窥探mysql存储过程细节

    存储过程,可以这样认为,将我们需要特殊处理的sql语句封装成函数,当需要的时候我们只需调用这个函数就可以实现我们想要的操作,这个过程我们可以称之为存储过程.当然了,真正存储过程的定义不是这样的.但是我们可以这样简单的去理解存储过程. 下面我们看一个简单的使用存储过程的例子. 首先我们新建一张表 proced: create table proced( id int(5) primary key auto_increment, name varchar(50), type varchar(50)

  • mysql服务1067错误多种解决方案分享

    my.ini在MySQL的目录,于是在同事机器上拷贝了一个my.ini拿来修改,并单独放在一个地方作为备份.其内容如下: 复制代码 代码如下: #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=d:/MySQL5.0/ #bind-address=127.0.0.1 datadir=d:/MySQL5.0/data #l

  • MySQL中易被我们忽略的细节

    MySQL作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑. 声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事! 1.不区分大小写(字段名) MySQL的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分命名了,如: SELECT uid,v_state FROM all_user WH

  • mysql "too many connections" 错误 之 mysql解决方法

    解决方法是修改/etc/mysql/my.cnf,添加以下一行: set-variable = max_connections=500 或在启动命令中加上参数 max_connections=500 就是修改最大连接数,然后重启mysql.默认的连接数是100,太少了,所以容易出现如题错误. 以下是mysql.com网站的相关说明: If you get a Too many connections error when you try to connect to the mysqld serv

  • 在 本地计算机 无法启动mysql服务 错误1067:进程意外中止

    无论安装何版本的mysql,在管理工具的服务中启动mysql服务时都会在中途报错  内容为:在 本地计算机 无法启动mysql服务 错误1067:进程意外中止 经过多方求教,得解决方法如下 查找系统(后来验证应该为windows目录)目录下的my.ini文件,编辑内容(如果没有该文件,则新建一个),至少包含basedir,datadir这两个基本的配置.  [mysqld]  # set basedir to installation path, e.g., c:/mysql  # 设置为MYS

  • mysql 发生系统错误1067的解决方法

    解决方法如下: 1.先删除mysql服务 控制面板->管理工具->服务,先停止mysql服务 开始->运行->输入cmd->sc delete mysql 服务删除 2.修改my.ini 如果没将其创建(以下设置可以参考http://hi.baidu.com/chuyanwu/blog/item/98142a2e7d448d564ec2262c.html一般这个设置都不会错误) [mysqld] # set basedir to your installation path

  • MySQL错误代码大全

    B.1. 服务器错误代码和消息 服务器错误信息来自下述源文件: · 错误消息信息列在share/errmsg.txt文件中."%d"和"%s"分别代表编号和字符串,显示时,它们将被消息值取代. · 错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义. · SQLSTATE值列在share/errmsg.txt文件中,用于生成include/s

随机推荐