MySQL使用临时表加速查询的方法

使用MySQL临时表,有时是可以加速查询的,下面就为您详细介绍使用MySQL临时表加速查询的方法。

AS 

SELECT * FROM cust_with_balance
WHERE postcode>”98000″

elect num from a where num in(select num from b)

复制代码 代码如下:

SELECT cust.name,rcvbles.balance,……other columns 

如果这个查询要被执行多次而不止一次,可以把所有未付款的客户找出来放在一个临时文件中,并按客户的名字进行排序:

SELECT * FROM T2 WHERE T2.C2=T1.C2) 

把表的一个子集进行排序并创建MySQL临时表,有时能加速查询。它有助于避免多重排序操作,而且在其他方面还能简化优化器的工作。例如:

可以写成: 

临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘I/O,所以查询工作量可以得到大幅减少。

 

MySQL使用临时表加速查询的方法。希望本文所述对大家的MySQL数据库程序设计有所帮助。

把表的一个子集进行排序并创建视图,有时能加速查询。它有助于避免多重排序
操 作,而且在其他方面还能简化优化器的工作。例如:

然后以下面的方式在临时表中查询:

(SELECT COUNT(*)FROM T2 WHERE T2.C2=T1.C2>0) 

您可能感兴趣的文章:

  • MySQL中Update、select联用操作单表、多表,及视图与临时表的区别
  • MySQL两种临时表的用法详解
  • 浅谈MySQL临时表与派生表
  • 深度解析MySQL
    5.7之临时表空间
  • MySQL中临时表的基本创建与使用教程
  • MySQL中关于临时表的一些基本使用方法
  • 解析Mysql临时表及特点
  • mysql 临时表 cann”t
    reopen解决方案
  • mysql复制中临时表的运用技巧
  • MySQL临时表的简单用法介绍

select id from t where num in(1,2,3)对于连续的数值,能用 between
就不要用 in 了:

SELECT cust.name,rcVBles.balance,……other columns 
SELECT cust.name,rcVBles.balance,……other columns 
FROM cust,rcvbles 
WHERE cust.customer_id = rcvlbes.customer_id 
AND rcvblls.balance>0 
AND cust.postcode>”98000″ 
ORDER BY cust.name

SELECT member_number, first_name, last_name FROM members 

本文实例讲述了MySQL使用临时表加速查询的方法。分享给大家供大家参考。具体分析如下:

FROM cust,rcvbles 

注意:临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下,注意不要丢失数据。

WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21 

SELECT cust.name,rcvbles.balance,……other columns 
SELECT cust.name,rcvbles.balance,……other columns 
FROM cust,rcvbles 
WHERE cust.customer_id = rcvlbes.customer_id 
AND rcvblls.balance>0 
ORDER BY cust.name 
INTO TEMP cust_with_balance

 1.in 和 not in
也要慎用,因为IN会使系统无法使用索引,而只能直接搜索表中的数据。如:

复制代码 代码如下:

缓存:hibernate,spring3有缓存模块

复制代码 代码如下:

AND rcvblls.balance>0 

4.很多时候用 exists是一个好的选择:

SELECT SUM(A.AMOUNT) FROM ACCOUNT A,CARD B WHERE A.CARD_NO = B.CARD_NO
AND A.ACCOUNT_NO=B.ACCOUNT_NO 

CREATE VIEW DBO.V_CUST_RCVLBES 

应改为: 

SELECT * FROM T1 WHERE F1/2=100 

IF EXISTS (SELECT * FROM table_name WHERE column_name = ‘xxx’)

sql优化:

 

第二句将比第一句执行快得多。

SELECT SUM(T1.C1)FROM T1 WHERE( 

AND cust.postcode>“98000” 

6.使用视图加速查询 

SELECT cust.name,rcvbles.balance,……other columns 

and尽量把假的放到右边(一个为假就为假)
 Or尽量把为真的放到右边(一个为真就为真)

如果你想校验表里是否存在某条纪录,不要用count(*)那样效率很低,而且浪费服务
器资源。可以用EXISTS代替。如: 

WHERE cust.customer_id = rcvlbes.customer_id 

ORDER BY cust.name

SELECT SUM(T1.C1) FROM T1WHERE EXISTS( 

 

WHERE postcode>“98000” 

发表评论

电子邮件地址不会被公开。 必填项已用*标注