Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#65 mysql database lock and index #143

Merged
merged 1 commit into from
Jun 9, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ Redis原始源码来自: https://github.com/antirez/redis

#### 数据库
* [数据库事务](https://github.com/SwanSpouse/redis_go/blob/master/z_docs/database/db_transaction.md)
* [数据库锁和索引](https://github.com/SwanSpouse/redis_go/blob/master/z_docs/database/database_index.md)

#### data type
* [Hash表实现](https://github.com/SwanSpouse/redis_go/blob/master/z_docs/data_type/redis_go_dict.md)
Expand Down
35 changes: 35 additions & 0 deletions z_docs/database/database_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@


### MySql锁相关

![mysql lock](https://github.com/SwanSpouse/redis_go/blob/master/z_docs/database/mysql_lock.png?raw=true)


### MySql索引

mysql的索引分为单列索引(主键索引,唯索引,普通索引)和组合索引.

* 单列索引:一个索引只包含一个列,一个表可以有多个单列索引.

* 组合索引:一个组合索引包含两个或两个以上的列,

#### 联合索引:

select * from users where area=’Beijing’ and age=22;

* 如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率。

* 如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。
因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

* 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

* 对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

* mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

* 一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

* 在列上进行运算将导致查询不使用索引。


Binary file added z_docs/database/mysql_lock.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion z_docs/database/mysql_lock.xml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/7.4.3 Chrome/58.0.3029.110 Electron/1.7.5 Safari/537.36" version="7.4.3" editor="www.draw.io" type="device"><diagram id="fbbee6c2-cdfb-a1af-b53d-de2337490f07" name="Page-1">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</diagram></mxfile>
<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/8.7.1 Chrome/61.0.3163.100 Electron/2.0.2 Safari/537.36" version="8.7.6" editor="www.draw.io" type="device"><diagram id="fbbee6c2-cdfb-a1af-b53d-de2337490f07" name="Page-1">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</diagram></mxfile>