mysql数据库性能优化

  1. 为查询缓存优化你的查询
    // 查询缓存不开启
    $r = mysql_query(“SELECT username FROM user WHERE signup_date >= CURDATE()”);

// 开启查询缓存
$today = date(“Y-m-d”);
r = m y s q l q u e r y ( " S E L E C T u s e r n a m e F R O M u s e r W H E R E s i g n u p d a t e > = ′ r = mysql_query("SELECT username FROM user WHERE signup_date >= ' r=mysqlquery("SELECTusernameFROMuserWHEREsignupdate>=today’");

  1. 当只要一行数据时使用 LIMIT 1
    // 没有效率的:
    r = m y s q l q u e r y ( " S E L E C T ∗ F R O M u s e r W H E R E c o u n t r y = ′ C h i n a ′ " ) ; i f ( m y s q l n u m r o w s ( r = mysql_query("SELECT * FROM user WHERE country = 'China'"); if (mysql_num_rows( r=mysqlquery("SELECTFROMuserWHEREcountry=China");if(mysqlnumrows(r) > 0) {
    // …
    }

// 有效率的:
r = m y s q l q u e r y ( " S E L E C T 1 F R O M u s e r W H E R E c o u n t r y = ′ C h i n a ′ L I M I T 1 " ) ; i f ( m y s q l n u m r o w s ( r = mysql_query("SELECT 1 FROM user WHERE country = 'China' LIMIT 1"); if (mysql_num_rows( r=mysqlquery("SELECT1FROMuserWHEREcountry=ChinaLIMIT1");if(mysqlnumrows(r) > 0) {
// …
}

  1. 为搜索字段建索引
    索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么,请为其建立索引吧

4.在Join表的时候使用相当类型的例,并将其索引
如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。
// 在state中查找company
$r = mysql_query(“SELECT company_name FROM users
LEFT JOIN companies ON (users.state = companies.state)
WHERE users.id = $user_id”);

// 两个 state 字段应该是被建过索引的,而且应该是相当的类型,相同的字符集。

5.避免 SELECT *

6.使用 ENUM 而不是 VARCHAR

7.固定长度的表会更快

8.like查询
select name from t_table t where t.name like ‘%何远君%’,这个查询即使name建立了索引也不起作用
select name from t_table t where t.name like '何远君%,这种查询使用到了索引,但是并非要想查询的关键词都在开头
可以使用LOCATE(‘xbar’,foobar),该方法返回xbar在字符串foobar中的索引
如果foobar不包含xbar则返回0,因为sql可以这样写:
select name from t_table t where loacate(‘何远君’,t.name)>0
也可以
使用POSITION(‘substr’ IN field)方法
select *from t_table t where POSITION(‘何远君’ IN t.name)方法
INSTR(‘str’,‘sustr’) 方法
SELECT column FROM table WHERE INSTR(field, ‘keyword’ )>0

各种IT书籍书目及下载链接
https://blog.csdn.net/dh1027/article/details/89327978

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值