当前位置:Gxlcms > 数据库问题 > mysql重点--正确使用

mysql重点--正确使用

时间:2021-07-01 10:21:17 帮助过:51人阅读

- like ‘%xx‘ 2 select * from tb1 where name like ‘%cn‘; 3 - 使用函数 4 select * from tb1 where reverse(name) = ‘wupeiqi‘; 5 - or 6 select * from tb1 where nid = 1 or email = ‘seven@live.com‘; 7 特别的:当or条件中有未建立索引的列才失效,以下会走索引 8 select * from tb1 where nid = 1 or name = ‘seven‘; 9 select * from tb1 where nid = 1 or email = ‘seven@live.com‘ and name = ‘alex‘ 10 - 类型不一致 11 如果列是字符串类型,传入条件是必须用引号引起来,不然... 12 select * from tb1 where name = 999; 13 - != 14 select * from tb1 where name != ‘alex‘ 15 特别的:如果是主键,则还是会走索引 16 select * from tb1 where nid != 123 17 - > 18 select * from tb1 where name > ‘alex‘ 19 特别的:如果是主键或索引是整数类型,则还是会走索引 20 select * from tb1 where nid > 123 21 select * from tb1 where num > 123 22 - order by 23 select email from tb1 order by name desc; 24 当根据索引排序时候,选择的映射如果不是索引,则不走索引 25 特别的:如果对主键排序,则还是走索引: 26 select * from tb1 order by nid desc; 27 28 - 组合索引最左前缀 29 如果组合索引为:(name,email) 30 name and email -- 使用索引 31 name -- 使用索引 32 email -- 不使用索引

2.其他注意事项

- 避免使用select *

count(1)或count(列) 代替 count(*) - 创建表时尽量时 char 代替 varchar - 表的字段顺序固定长度的字段优先 - 组合索引代替多个单列索引(经常使用多个条件查询时) - 尽量使用短索引 - 使用连接(JOIN)来代替子查询(Sub-Queries) - 连表时注意条件类型需一致 - 索引散列值(重复少)不适合建索引,例:性别不适合

3.limit分页

这里只做简单表述。在使用   select sth from table_name limit 0,10;   过程中发现当数据量大的时候。比如limit 24322,10需要ALL遍历到两万条后才会拿到 所需要的数据。需要的时间非常长,优化为:   select * from bigdata where nid > 3000 limit 3000,10;   这样会进行range查询。速度非常快,所做的仅仅是记录下上次查询过的nid就行。 同样在直接输入页数比如客户输入4989,怎么样处理? 利用B-tree数组来先粗略定位页数也许可行。  

 

mysql重点--正确使用

标签:div   keyword   mysq   order by   处理   时间   整数   com   主键   

人气教程排行