成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

因為查詢沒有命中索引,數據庫直接被查崩了

數據庫 其他數據庫
在我們創建表的時候,適當的索引能夠加快我們的查詢速度,不適當的索引,反而對我們的表,有害而無益。你學會了么?

大家都知道,數據庫中使用索引,進行檢索數據的話,那么就會大幅度的提升你的查詢效率,原本可能需要三秒甚至四秒左右的查詢SQL,增加索引之后,會可以能讓查詢速率至少提升百分之30,那么加索引怎么才能如何讓自己的查詢命中索引呢?又應該怎么去給自己的表結構建立索引呢?這才是阿粉想要講的事情。

索引失效

我們在日常開發的時候,很多時候都會在創建表完成之后,給這個對應的表建立上一個索引,而這個索引的定義呢,一般也是根據自己的業務需求來的,但是有些雖然根據自己的業務需求弄好了之后,發現有些查詢明明自己感覺都運用了索引,但是最終卻發現自己的索引失效了。

那么引發索引失效,都有哪些騷操作呢?

實際上就是七個字,模 型 數 空 運 最 快

模:模糊查詢的意思。like的模糊查詢以%開頭,索引失效。比如:

SELECT * FROM user? WHERE name LIKE '%極客技術';

型:代表數據類型。類型錯誤,如字段類型為varchar,where條件用number,索引也會失效。比如:

SELECT * FROM user WHERE height= 10;

height為varchar類型導致索引失效。

數:是函數的意思。對索引的字段使用內部函數,索引也會失效。這種情況下應該建立基于函數的索引。比如:

SELECT * FROM user WHERE DATE(create_time) = '2020-09-03';

create_time字段設置索引,那就無法使用函數,否則索引失效。

空:是Null的意思。索引不存儲空值,如果不限制索引列是not null,數據庫會認為索引列有可能存在空值,所以不會按照索引進行計算。比如:

SELECT * FROM user WHERE address IS NULL不走索引。

SELECT * FROM user WHERE address IS NOT NULL;走索引。

建議大家這設計字段的時候,如果沒有必要的要求必須為NULL,那么最好給個默認值空字符串,這可以解決很多后續的麻煩(切記)。

運:是運算的意思。對索引列進行(+,-,*,/,!, !=, <>)等運算,會導致索引失效。比如:

SELECT * FROM user WHERE age - 1 = 20;

最:是最左原則。在復合索引中索引列的順序至關重要。如果不是按照索引的最左列開始查找,則無法使用索引。

快:全表掃描更快的意思。如果數據庫預計使用全表掃描要比使用索引快,則不使用索引。

如何建立索引呢?

這個時候,如果面試官問你的時候,說,如何建立索引,就是建立索引的規范的時候,你應該怎么回答呢?

其實這就是問你,你在設計表的時候,怎么去設計表里面的索引比較合適呢?阿粉列出幾個:

1.經常與其他表進行連接的表,在連接字段上應該建立索引

也就是在關聯條件上面,建立索引,比如a.id = b.aid

a表的id,是主鍵,而這時候,我們就需要把b表的對應a表的id建立一個索引,這樣在使用關聯查詢的時候,能夠命中索引。

2.經常出現在Where子句中的字段,特別是大表的字段,應該建立索引

3.索引應該建在小字段上,對于大的文本字段甚至超長字段,不要建索引

4.頻繁進行數據操作的表,不要建立太多的索引

5.在經常需要排序的列上創建索引

6.為經常出現在關鍵字order by、group by、distinct后面的字段,建立索引。

哪些字段不適合去建立索引

這些字段是索引應該建立的在什么字段上,那么什么樣的表字段,不適合去建索引呢?

1.對于那些在查詢中很少使用或者參考的列不應該創建索引

2.不要在有大量相同取值的字段上,建立索引

3.當修改性能遠遠大于檢索性能時,不應該創建索引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大于檢索性能時,不應該創建索引。

所以在我們創建表的時候,適當的索引能夠加快我們的查詢速度,不適當的索引,反而對我們的表,有害而無益。你學會了么?

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2022-04-14 08:21:35

數據庫查詢變慢MySQL

2023-12-04 09:14:00

數據庫MySQL

2019-01-03 15:40:38

數據庫SQL查詢JSON

2011-03-16 08:54:45

Oracle數據庫索引

2010-04-07 17:45:22

Oracle位圖索引

2019-12-16 14:04:48

MySQL數據庫SQL

2018-07-19 14:01:23

數據庫索引MySQL

2021-05-08 14:07:26

SQLServer數據庫

2022-06-28 15:46:18

SQL語句索引

2021-11-01 23:57:03

數據庫哈希索引

2021-03-27 11:05:24

數據庫索引MySQL

2021-04-09 08:21:25

數據庫索引數據

2023-12-20 12:49:05

索引數據檢索數據庫

2018-08-27 07:29:34

InnoDBinsertselect

2011-03-11 14:56:33

Oracle數據庫命中率優化

2010-01-29 09:41:47

Oracle數據庫

2022-08-27 11:02:04

InnoDB數據庫索引

2021-11-30 21:10:19

數據庫B樹索引

2018-08-23 09:10:01

數據庫MySQLInnoDB

2017-02-08 11:00:50

數據庫索引類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品99久久久大便 | 久久y| 国产精品a久久久久 | 亚洲色欲色欲www | 免费观看色| 久久天天| 中文字幕精品一区二区三区精品 | 香蕉久久av | 成人av一区二区在线观看 | 人人爽人人爽 | 国产毛片av| 久久69精品久久久久久久电影好 | 日韩一区二区三区在线看 | 国产精品毛片 | 偷拍自拍在线观看 | 华人黄网站大全 | 欧美中文一区 | 亚洲综合伊人 | 国产精品免费一区二区三区四区 | 范冰冰一级做a爰片久久毛片 | 天堂视频中文在线 | 在线不卡av| 久久激情网| 色综合激情 | 国产一区二区三区在线视频 | 精品伊人久久 | 久久精品久久久久久 | 国产一级淫片免费视频 | 日韩视频二区 | 亚洲日日操 | 97久久精品午夜一区二区 | 在线观看免费高清av | 日本一卡精品视频免费 | 欧美日韩精品在线一区 | 一级黄片一级毛片 | 一级黄色片免费 | 欧美一区二区三区视频在线观看 | 一区二区三区在线 | 日本成人中文字幕在线观看 | 色综久久 | 欧美激情精品久久久久久变态 |