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

MySQL优化

2015-10-30 18:39 543 查看

使用python连接mysql

安装MySQL-python 不支持Python3

要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

下载地址:https://pypi.python.org/pypi/MySQL-python/

下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:

>>python setup.py install


1.no module named configparser

In Python 3, ConfigParser has been renamed to configparser

pip install configparser
//需先安装pip


2.EnvironmentError: mysql_config not found

没有安装:libmysqlclient-dev

sudo apt-get install libmysqlclient-dev


3.Python.h: No such file or directory

先查找是否存在Python.h这个文件。/usr/include/Python2.x

如果没有则需要安装Python-dev这个包

sudo apt-get install python-dev


1、索引优化

1、建索引的几大原则

http://tech.meituan.com/mysql-index.html

http://coolshell.cn/articles/1846.html

mySQL数据库Sql语句执行效率检查–Explain命令

2、索引的操作

查看索引

show index from mytable


普通索引

– 创建索引

CREATE INDEX indexName ON mytable(username(10));            -- 单列索引
CREATE INDEX indexName ON mytable(username(10),city(10));   -- 组合索引


– indexName为索引名,mytable表名,username和city为列名,10为前缀长度,即索引在该列从最左字符开始存储的信息长度,单位字节

– 如果是CHAR,VARCHAR类型,前缀长度可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 前缀长度,下同。

ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))
建立这样的组合索引,其实是相当于分别建立了下面两组组合索引:

–title,time

–title

– 修改表结构来创建索引

ALTER TABLE mytable ADD INDEX indexName (username(10));


唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式(仅仅在创建普通索引时关键字 INDEX 前加 UNIQUE):

– 创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(10));


– 修改表结构来创建索引

ALTER TABLE mytable ADD UNIQUE INDEX indexName (username(10)); -- 也可简写成
ALTER TABLE mytable ADD UNIQUE indexName (username(10));


主键索引

它是一种特殊的唯一索引,不允许有空值。在建表的时候同时创建的主键即为主键索引

主键索引无需命名,一个表只能有一个主键。主键索引同时可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引

– 修改表结构来创建索引

ALTER TABLE mytable ADD PRIMARY KEY (id);


全文索引

InnoDB存储引擎不支持全文索引
show engines;
查看默认引擎

– 创建索引

CREATE FULLTEXT INDEX indexName ON mytable(username(10));


– 修改表结构来创建索引

ALTER TABLE mytable ADD FULLTEXT INDEX indexName (username(10)); -- 也可简写成
ALTER TABLE mytable ADD FULLTEXT indexName (username(10));


– 创建表的时候直接指定

CREATE TABLE mytable(
id INT,
username VARCHAR(16),
city VARCHAR(16),
age INT,
FULLTEXT INDEX indexName (username(10))
//也可简写成 FULLTEXT indexName (username(10))
)ENGINE=MYISAM;


– 建表时创建全文索引,要设置该表的存储引擎为MYISAM,新版mysql默认InnoDB存储引擎不支持全文索引

删除索引

DROP INDEX indexName ON mytable;

修改表的实现方法

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