如何建立mysql索引,mysql索引的利与弊,建立mysql索引时需要注意的地方

发布时间:2020-05-19 09:22:10   分类:MySQL

在关系数据库中,索引是对表中一列或多列的值进行排序的一种存储结构,它是表中一列或多列的值的集合,而且其中包含了对应表中记录的引用指针。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。要注意的是,索引也是表的组成部分,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立索引。举个例子:首先,先假设有一张表,表有10W个记录,其中有一条记录我们已知a='1',如果想要拿到对应记录的话,需要的sql语句是 SELECT * FROM xxx WHERE a='

PHP mysql 返回数据为字符串类型

发布时间:2020-01-02 17:38:25   分类:php

 PHP mysql 返回数据为字符串类型  用 php-mysqlnd 扩展 替换 php56w-mysql 解决yum list|grep php-mysqlnd  544  yum list|grep php  545  php -i  546  yum list|grep php56  547  yum install php56w-mysqlnd.x86_64  548  php -m  549  yum list installed | grep php  550

解决 MySQL 分页数据错乱重复

发布时间:2018-07-13 15:59:07   分类:MySQL

前言一天,小明很着急地在通讯工具上说:这边线上出现了个奇怪的问题,麻烦 DBA 大大鉴定下,执行语句 select xx from table_name wheere xxx order by 字段A limit offset;,表数据总共 48 条,分页数量正常,但出现了结果混杂的情况,第一页的数据出现在了第二页上;如果 order by 字段B 就不会出现这个现象,怎么会这样呢!其实,这个问题很简单,如果你有仔细阅读官档的话。~^_^~我们先来看看官档是怎么说的:If multiple rows have identical values in the ORDER BY columns, the server is f

MySQL 数据备份与还原

发布时间:2017-12-22 11:37:16   分类:MySQL

一、数据备份  1、使用mysqldump命令备份  mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。  mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。  1、备份一个数据库  mysqldump基本语法:  mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql  其中:dbname参数表示数据库的名称;table1和table2参数表示需要备份的表的名称,为空

MySQL 自动备份 Shell 脚本

发布时间:2017-08-02 15:20:16   分类:MySQL

可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab 定时执行。#!/bin/bash # 要备份的数据库名,多个数据库用空格分开 databases=(db1 db2 db3) # 备份文件要保存的目录 basepath='/root/backup/mysql/' if [ ! -d "$basepath" ]; then mkdir -p "$basepath" fi # 循环databases数组 for db in ${databases[*]} do # 备份数据库生成SQL文件 /bin/nice -n 19 /

Mysql中MyISAM引擎和InnoDB引擎的比较

发布时间:2017-06-19 10:10:55   分类:MySQL

结论如果不清楚自己应该用什么引擎,那么请选择InnoDB,Mysql5.5+的版本默认引擎都是InnoDB,早期的Mysql版本默认的引擎是MyISAM MyISAM 和 InnoDB的适用场景MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。 MyISAM 和 InnoDB的区别1)MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持2)mysiam表不支持外键3)在执行数据库写入的操作(insert,update,delete)的时候,mysiam表会锁

SQL 注入

发布时间:2017-06-15 16:49:37   分类:MySQL

很多 web 开发者没有注意到 SQL 查询是可以被篡改的,因而把 SQL 查询当作可信任的命令。殊不知道,SQL 查询可以绕开访问控制,从而绕过身份验证和权限检查。更有甚者,有可能通过 SQL 查询去运行主机操作系统级的命令。直接 SQL 命令注入就是攻击者常用的一种创建或修改已有 SQL 语句的技术,从而达到取得隐藏数据,或覆盖关键的值,甚至执行数据库主机操作系统命令的目的。这是通过应用程序取得用户输入并与静态参数组合成 SQL 查询来实现的。下面将会给出一些真实的例子。由于在缺乏对输入的数据进行验证,并且使用了超级用户或其它有权创建新用户的数据库帐号来连接,攻击者可以在数据库中新建一个超级用户。Example #1 一段实现数据分页显示的代码……

MySQL 正则表达式

发布时间:2017-06-13 11:39:26   分类:MySQL

 MySQL中使用 REGEXP 操作符来进行正则表达式匹配。模式描述^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。[...]字符集合。匹配所包含的任意一个字符。例如, '[abc]'

无法远程访问 MySQL

发布时间:2017-06-09 16:02:26   分类:MySQL

无法远程访问,用户没有授权远程访问如果仅仅授权 root@localhost,那么远程访问则无法连接,这时需要授权:mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANTOPTION;mysql > FLUSH PRIVILEGES;无法远程访问,防火墙没有打开 3306 端口如果 Linux 主机上安装的防火墙没有打开 3306 端口,那么通过远程访问 MySQL 时当然就无法连接上。要打开 3306 端口,请执行以下步骤:编辑文件 /etc/sysconfig/ip