Closed xiyoulaoyuanjia closed 9 years ago
- 选择合适的字段的属性. 例如属性与性别最好设置为ENUM类型. 表的字段尽可能的小(数据库中的表越小在它上面执行的速度也越快)
- 尽量避免使用 NULL 原因是在某列上面做索引的时候如果这列有NULL,则需要更多的存储空间..mysql内部还需一些特殊的处理
- 使用join 来代替子查询
a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOTin(SELECT customerid FROM orderinfo)
b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOTin(SELECT customerid FROM orderinfo)
提高b的速度优化注意这里使用了左连接:
SELECT FROM customerinfo LEFT JOIN orderidcustomerinfo.customerid=orderinfo.customerid
WHERE orderinfo.customerid IS NULL
- mysql 临时表 的含义是指在连接的时候创建一个表.连接断开的时候表就删除了..创建临时表只需要在一般的表 前面加一个TEMPORARY. 使用临时表的原因是 在 连接之后需要经常性的对大集合表的子集操作则可以选择创建一个 临时表...
SELECT name FROM `nametest`
UNION
SELECT username FROM `nametest2`
- 事务处理 多个操作一起执行
mysql_query("BEGIN");
mysql_query("INSERT INTOcustomerinfo (name) VALUES ('$name1')";
mysql_query("SELECT * FROM`orderinfo` where customerid=".$id");
mysql_query("COMMIT");
- 锁定表 优化事务处理 (注意这里可以优化到事件操作部分)
mysql_query("LOCK TABLEcustomerinfo READ, orderinfo WRITE");
mysql_query("SELECT customeridFROM `customerinfo` where id=".$id);
mysql_query("UPDATE `orderinfo`SET ordertitle='$title' where customerid=".$id);
mysql_query("UNLOCKTABLES");
- 建立索引
创建索引 可以使用 ALTER TABLE 或者 CREATE INDEX
- ALTER TABLE 可以创建 普通索引,UNIQUE索引,PRIMARY KEY索引
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
- CREATE INDEX 可以增加普通索引 与 UNIQUE索引
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
- 索引类型
创建索引时可以规定索引包不包含重复值.如果不包含重复值则 为PRIMARY KEY或UNIQUE索引
- 删除索引
DROP INDEX语句来删除索引
DROP INDEX index_name ON talbe_name
- 在建立好索引的字段上面尽量少进行函数操作.. 例如以下几个例子
SELECT * FROM order WHEREYEAR(orderDate)<2008;(慢)
SELECT * FROM order WHEREorderDate<"2008-01-01";(快)
SELECT * FROM order WHEREaddtime/7<24;(慢)
SELECT * FROM order WHEREaddtime<24*7;(快)
SELECT * FROM order WHERE title like"%good%";
SELECT * FROM order WHEREtitle>="good" and name<"good";
- where 执行顺序是从至下往最上面执行 所以一般把能过滤最大数据的信息放到最下面..
数据库1中存放着a类数据,数据库2中存放着以天为单位划分的表30张(比如table_20110909,table_20110910,table_20110911),总共是一个月的数据。表1中的a类数据中有一个字段userid来唯一判别用户身份,表2中的30张表(每张表结构相同)也有一个字段userid来唯一识别用户身份。如何判定a类数据库的多少用户在数据库2中出现过?
可以参考这里
参考一