Heim php教程 php手册 SQL语句效率问题的几点总结

SQL语句效率问题的几点总结

Jun 06, 2016 pm 08:00 PM
http php sql 总结 效率 语句

转贴处:http://blog.csdn.net/yaowenbin528/archive/2009/10/26/4728713.aspx 1. SQL优化的原则是: 将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。 调整不良SQL通常可以从以下几点切入: 检查不良的SQL,考虑其写法是否还有可

 

转贴处:http://blog.csdn.net/yaowenbin528/archive/2009/10/26/4728713.aspx

 

1. SQL优化的原则是:

  将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。  
  调整不良SQL通常可以从以下几点切入:  
  检查不良的SQL,考虑其写法是否还有可优化内容  
  检查子查询   考虑SQL子查询是否可以用简单连接的方式进行重新书写  
  检查优化索引的使用  
  考虑数据库的优化器   
    

2. 避免出现SELECT   *   FROM   table     语句,要明确查出的字段。     
3. 在一个SQL语句中,如果一个where条件过滤的数据库记录越多, 这样查询时只进行索引扫描,不读取数据块。   
 
4. 查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,

    这样查询时只进行索引扫描,不读取数据块。  

   

5. 在判断有无符合条件的记录时建议不要用SELECT   COUNT   (*)和select   top   1   语句。   
6. 使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,并尽量在SQL语句的最里层进行限定,以减少数据的处理量。   
    
7. 应绝对避免在order   by子句中使用表达式。   
    
8. 如果需要从关联表读数据,关联的表一般不要超过7个。   
    
9. 小心使用   IN   和   OR,需要注意In集合中的数据量。建议集合中的数据不超过200个。   
    
10.    用      代替,>用>=代替,     
11. 在查询时尽量减少对多余数据的读取包括多余的列与多余的行。   
    
12. 对于复合索引要注意,例如在建立复合索引时列的顺序是F1,F2,F3,

     则在where或order   by子句中这些字段出现的顺序要与建立索引时的字段顺序一致,

    且必须包含第  一列。只能是F1或F1,F2或F1,F2,F3。否则不会用到该索引。 

13. 多表关联查询时,写法必须遵循以下原则,这样做有利于建立索引,提高查询效率。

     格式如下

     select   sum(table1.je)   from   table1   table1,     table2     table2,               

     table3     table3   where   (table1的等值条件(=))   and   (table1的非等值条件)  

     and   (table2与table1的关联条件)   and (table2的等值条件)   and   (table2的非等值条件)    

     and (table3与table2的关联条件)   and   (table3的等值条件)   and   (table3的非等值件)。   
     注:关于多表查询时from     后面表的出现顺序对效率的影响还有待研究。   
    
14. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。

     例如:select   name    from   customer   where  

     customer_id   in   (   select     customer_id   from   order   where   money>1000)。

     应该用如下语句代替:select   name   from   customer  

    inner   join   order   on     customer.customer_id=order.customer_id  

    where   order.money>100。   
    
15. 在WHERE   子句中,避免对列的四则运算,

     特别是where   条件的左边,严禁使用运算与函数对列进行处理。

     比如有些地方   substring   可以用like代替。   
    
16. 如果在语句中有not   in(in)操作,

     应考虑用not   exists(exists)来重写,最好的办法是使用外连接实现。   
      
17. 对一个业务过程的处理,应该使事物的开始与结束之间的时间间隔越短越好,

     原则上做到数据库的读操作在前面完成,数据库写操作在后面完成,避免交叉。   
    

18. 请小心不要对过多的列使用列函数和order   by,group   by等,谨慎使用disti软件开发t。   
    
19. 用union   all   代替   union,数据库执行union操作,

     首先先分别执行union两端的查询,

     将其放在临时表中,然后在对其进行排序,过滤重复的记录。  
     当已知的业务逻辑决定query   A和query   B中不会有重复记录时,

     应该用union   all代替union,以提高查询效率。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

See all articles