【數據庫】13種會導致索引失效語句寫法

數據庫的索引是保證數據快速查詢的重中之重,以下13種會導致索引失效語句會導致你的SQL查詢索引失效,具體如下:

1、使用like關鍵字模糊查詢時,% 放在前面索引不起作用,只有“%”不在第一個位置,索引才會生效(like ‘%文’–索引不起作用)
2、使用聯合索引時,只有查詢條件中使用了這些字段中的第一個字段,索引才會生效
3、使用OR關鍵字的查詢,查詢語句的查詢條件中只有OR關鍵字,且OR前后的兩個條件中的列都是索引時,索引才會生效,否則索引不生效。
4、盡量避免在where子句中使用!=或<>操作符,否則引擎將放棄使用索引而進行全表掃描。
5、對查詢進行優化,應盡量避免全表掃描,首先應考慮在where以及order by涉及的列上建立索引。
6、應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描。如:
  select id from t where num/2=100
  應改為:
  select id from t where num=100*2
7、盡量避免在where子句中對字段進行函數操作,將導致引擎放棄使用索引而進行全表掃描。
8、不要在 where 子句中的“=”左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引。
9、并不是所有的索引對查詢都有效,sql是根據表中的數據來進行查詢優化的,當索引列有大量數據重復時,sql查詢不會去利用索引,如一表中有字段
  sex,male,female幾乎個一半,那么即使在sex上建立了索引也對查詢效率起不了作用。
10、索引并不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,
  因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。一個表的索引數最好不要超過6個,
  若太多則應考慮一些不常使用到的列上建的索引是否有 必要。
11、盡量使用數字型字段,若只含數值信息的字段盡量不要設計為字符型,這會降低查詢和連接的性能,并會增加存儲開銷。
  這是因為引擎在處理查詢和連接時會 逐個比較字符串中每一個字符,而對于數字型而言只需要比較一次就夠了。
12、mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那么order by中的列是不會使用索引的。
   因此數據庫默認排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個列的排序,如果需要最好給這些列建復合索引。
13、order by 索引 ,不起作用的問題(除了主鍵索引之外):
  1、 如果select 只查詢索引字段,order by 索引字段會用到索引,要不然就是全表排列;

  2、如果有where 條件,比如where vtype=1 order by vtype asc . 這樣order by 也會用到索引!

二、四種索引

PRIMARY, INDEX, UNIQUE 這3種是一類
PRIMARY 主鍵。就是 唯一 且 不能為空。
INDEX 索引,普通的
UNIQUE 唯一索引。不允許有重復。
FULLTEXT 是全文索引,用于在一篇文章中,檢索文本信息的。

三、常用SQL優化:
1.優化group by 語句
默認情況,MySQL對所有的group by col1,col2進行排序。這與在查詢中指定order by col1, col2類似。如果查詢中包括group by但用戶想要避免排序結果的消耗,則可以使用order by null禁止排序
2.有些情況下,可以使用連接來替代子查詢。因為使用join,MySQL不需要在內存中創建臨時表。
3.如果想要在含有or的查詢語句中利用索引,則or之間的每個條件列都必須用到索引,如果沒有索引,則應該考慮增加索引
select * from 表名 where 條件1=‘’ or 條件2=‘tt’

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271910.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271910.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

yii2史上最簡單式安裝教程,沒有之一

作者&#xff1a;白狼 出處&#xff1a;www.manks.top/article/yii2_install 本文版權歸作者&#xff0c;歡迎轉載&#xff0c;但未經作者同意必須保留此段聲明&#xff0c;且在文章頁面明顯位置給出原文連接&#xff0c;否則保留追究法律責任的權利。 最近有小伙伴私聊我&…

java static調用嗎_Java中的static的使用

1.Java 中被static修飾的成員稱為靜態成員或類成員。它屬于整個類所有&#xff0c;而不是某個對象所有&#xff0c;即被類的所有對象所共享、且優先于對象存在。靜態成員可以使用類名直接訪問&#xff0c;也可以使用對象名進行訪問。使用 static 可以修飾變量、方法和代碼塊。2…

15個搞笑的程序員段子

1. 問答Q&#xff1a;你是怎么區分一個內向的程序員和一個外向的程序員的&#xff1f;A&#xff1a;外向的程序員會看著你的鞋和你說話時。Q&#xff1a;為什么程序員不能區分萬圣節和圣誕節&#xff1f;A&#xff1a;這是因為 Oct 31 Dec 25&#xff01;&#xff08;八進制的…

java ffmpeg 獲取視頻時長_Java通過調用FFMPEG獲取視頻時長

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻&#xff0c;并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec&#xff0c;為了保證高可移植性和編解碼質量&#xff0…

盤點15個搞笑的程序員段子

1.車Delphi象吉普車&#xff0c;什么路上都能開&#xff0c;卻在啥路上也開不好&#xff1b;PB就象卡丁車&#xff0c;只能在固定線路上開&#xff0c;到室外就有些不穩&#xff1b;VC象跑車&#xff0c;你開得起卻買不 起&#xff0c;而且一旦發生故障&#xff0c;想修都找不到…

判斷listview是上滑還是下滑的方法

方法一&#xff1a; 用setOnScrollListener(new AbsListView.OnScrollListener()&#xff09;來實現&#xff0c;判斷滑動后顯示的第一個條目 &#xff0c;與滑動前的第一個條目的大小來判斷&#xff0c; 這種方法邏輯簡單&#xff0c;但是必須要滑動到當前第一條目隱藏后才能起…

如何保證消息不被重復消費~~~~~(如何保證消息隊列的冪等性)

分析&#xff1a;這個問題其實換一種問法就是&#xff0c;如何保證消息隊列的冪等性&#xff1f;這個問題可以認為是消息隊列領域的基本問題。換句話來說&#xff0c;是在考察你的設計能力&#xff0c;這個問題的回答可以根據具體的業務場景來答&#xff0c;沒有固定的答案。 回…

SpringBoot:搭建第一個Web程序

本文簡單介紹一下spingBoot搭建web程序的流程&#xff0c;希望對入門學習spingBoot的朋友有所幫助。本文采用的開發工具是IDEA。 1、打開IDEA&#xff0c;創建項目。 2、點擊創建項目&#xff0c;進入下一步&#xff0c;具體按照畫紅框的操作。 3、點擊下一步 4、點擊下一步&am…

java uuid 效率_java uuid第一次性能

在java中產生uuid的方式是使用java.util.UUID。UUID.randomUUID().toString();我在測試redis性能時&#xff0c;使用uuid產生測試數據&#xff0c;發現多線程測試redis的rpush接口的時候&#xff0c;性能老是上不去。 查看cpu利用率也不高&#xff0c;網卡流量也不大。就是tps上…

第八周----補

這一周真不知道過得是什么&#xff0c;除了上課&#xff0c;感覺相當的混亂。 整個人每天都是處在消沉狀態&#xff0c;連這次作業都沒能很好的補上。 我的心情也像天氣一樣變得不穩定&#xff0c;一會晴天一會雨天的&#xff0c;更多的就是悶悶的感覺。 總會說事情很多忙的頭暈…

SpringBoot:application.properties基本的參數配置

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

java method 注釋_Java注解

Java注解注解概述3、注解3.1、注解&#xff0c;或者叫做注釋類型&#xff0c;英文單詞是&#xff1a;Annotation疑問&#xff1a;注解到底是干啥的&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;3.2、注解Ann…

盤點八個程序員必備的代碼編輯器

一個好的代碼編輯器不僅能使代碼變得更美觀&#xff0c;增強其可讀性&#xff0c;同時也能迅速推進程序員的工作進程&#xff0c;延長代碼的生命周期。 對于新手和有經驗的程序員&#xff0c;推薦使用的代碼編輯器也均有不同。小樓總結了一些好用的代碼編輯器&#xff0c;還在糾…

C#OOP之二 變量和表達式

2.1 C#的基本語法 C#代碼的外觀和操作方式與C和Java非常相似。初看起來&#xff0c;其語法比較混亂&#xff0c; 不像書面英語和其他語言。但是&#xff0c;在C#編程中&#xff0c;使用的樣式是比較清晰的&#xff0c;不用花太多的力氣就可以編寫出可讀性很強的代碼。 與其他語…

java異步多線程 判斷線程狀態_java多線程和異步回調

在實際開發過程中遇到的多線程情況不多&#xff0c;但是在生產環境中多線程是最基本的情況&#xff0c;java面試時也會考到&#xff0c;所以看看多線程的知識還是很有必要的。Thread&#xff0c;Runnable&#xff0c;Callable&#xff0c;Future&#xff0c;FutureTask,Executo…

C#調用API彈出打印機屬性對話框

調用api彈出打印機屬性對話框 Author:vitoriatangFrom:Internet.NET Framework封裝了很多關于打印的對話框&#xff0c;比如說PrintDialog, PageSetupDialog. 但是有的時候我們還需要關心打印機屬性對話框&#xff0c;那么就可以調用API來解決這個問題。有幾個API函數與之相關P…

Java中異常

首先我們要知道RuntimeException與Exception之間的關系與他們分別的含義&#xff1a; ①在Java中異常的基類為Throwable&#xff0c;他有兩個子類Exception與Errors&#xff0c;同時RuntimeException就是Exception的子類&#xff1b; ②RuntimeException&#xff0c;即運行時異…