(mysql)临时表的使用
使用临时表的好处:
使用临时表存放中间结果,加速查询,或存放临时结果.
(1)
创建临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
(2)
临时表将在你连接MySQL期间存在。当你断开时,MySQL将自动删除表并释放所用的空间。当然你可以在仍然连接的时
候删除表并释放空间。
DROP TABLE tmp_table -- 不用加temporary
(2.2)
临时表的常用方法:
create temporary table temp_user select * from user;
(3)
如果在你创建名为tmp_table临时表时名为tmp_table的表在数据库中已经存在,临时表将有必要屏蔽(隐藏)非临时
表tmp_table。
(4)
使用临时表加速查询
把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免多重排序操作,而且在其他方面还能简
化优化器的工作。例如:
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 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
然后以下面的方式在临时表中查询:
SELECT * from cust_with_balance
WHERE postcode>“98000”
临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘I/O,所以查询工作量可以得到大
幅减少。
相关文档:
最近用mysql写了几个复杂的语句,感觉在关系很复杂的时候先理清关系再选择用的查询方法是很重要的,因为同一个需求可能用不同的方法来查出来,但是复杂度,性能都不一样。
下面说一下能实现复杂查询的一些一般方法:
一.with语法(首先说明,好像Mysql不支持这个语 ......
这里是使用ODBC来转换数据库的。
1.安装mysql数据库的ODBC驱动,mysql官网有下载http://dev.mysql.com/downloads/connector/odbc/
2.打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC 数据源。
3.接着在下面的窗体中输入数据源名称,如mysqlodbc;然后输入服务器Server地址(localhost或其他),用户Us ......
MySQL重新安装的时候出现了问题:Could not start the service MySQL. Error:0,原因是没有对旧的MySQL完全卸载掉。
在你从电脑里卸载旧的MYSQL数据库服务时,首先先在WINDOWS服务里停掉MYSQL的服务。再到控制面板里的增加删除程序内进行删除,然后手动删除原安装文件,但是你并不能完整的把MYSQL服务删 ......
文件php.ini放入windows下,将下面内容拷贝到记事本命名为php.ini放入c:/windows下,重启Apache server:
[PHP]
;;;;;;;;;;;
; WARNING ;
;;;;;;;;;;;
; This is the default settings file for new PHP installations.
; By default, PHP installs itself with a configuration suitable for
; development purposes ......
Can't open the mysql.plugin table. Please run mysql_upgrade to create it
当碰到这样的错误是没有初始化mysql数据库,可以运行如下脚本就可以解决
cd /opt/mysql-5.1.46
cd scripts/
./mysql_install_db --user=mysql --datadir=/usr/local/mysql/var/
运行如下的代码就可以解决上述问题 ......