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各语句所占的百分比。
相关推荐
-
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
-
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错误代码大全
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
-
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 "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表字段设置默认值(图文教程及注意细节)
环境 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中易被我们忽略的细节
MySQL作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑. 声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事! 1.不区分大小写(字段名) MySQL的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分命名了,如: SELECT uid,v_state FROM all_user WH
-
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服务 错误1067:进程意外中止
无论安装何版本的mysql,在管理工具的服务中启动mysql服务时都会在中途报错 内容为:在 本地计算机 无法启动mysql服务 错误1067:进程意外中止 经过多方求教,得解决方法如下 查找系统(后来验证应该为windows目录)目录下的my.ini文件,编辑内容(如果没有该文件,则新建一个),至少包含basedir,datadir这两个基本的配置. [mysqld] # set basedir to installation path, e.g., c:/mysql # 设置为MYS
-
窥探mysql存储过程细节
存储过程,可以这样认为,将我们需要特殊处理的sql语句封装成函数,当需要的时候我们只需调用这个函数就可以实现我们想要的操作,这个过程我们可以称之为存储过程.当然了,真正存储过程的定义不是这样的.但是我们可以这样简单的去理解存储过程. 下面我们看一个简单的使用存储过程的例子. 首先我们新建一张表 proced: create table proced( id int(5) primary key auto_increment, name varchar(50), type varchar(50)
随机推荐
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器
- 微信小程序 判断手机号的实现代码
- php继承的一个应用
- php使用date和strtotime函数输出指定日期的方法
- 解析Android横竖屏切换的问题
- 分享Python字符串关键点
- python处理图片之PIL模块简单使用方法
- Mac Android Studio 3.0 Terminal 中文乱码问题处理
- 关于JS中的apply,call,bind的深入解析
- Javascript 布尔型分析
- WMI 脚本高手不完全手册
- shell脚本结合iptables防端口扫描的实现
- mssql中得到当天数据的语句
- SQL Server 2016 查询存储性能优化小结
- SqlSever 注释符 单行注释与多行注释
- jquery实现submit提交表单
- BootStrap智能表单实战系列(九)表单图片上传的支持
- C++画正弦线实例代码
- Smarty foreach控制循环次数的实现详解
- Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法