对字符串键索引DISTINCT的使用

会列出所有不同的手机号(account)

SELECT DISTINCT account FROM USER

 

会列出所有不同的手机号(account)个数

SELECT COUNT(DISTINCT account) AS L FROM USE

 

会列出以手机号前两位做索引,索引的个数

SELECT COUNT(DISTINCT LEFT(account,2)) AS L FROM `user`

 

以手机号做索引

alter table user add index index1(account)

以手机号前6位做索引

alter table user add index index1(account(6))

 

像身份证这种前面字符串重复率大的  可以选择倒序存储

select field_list from t where id_card = reverse('input_id_card_string')

或者用hash字段(既在表里添加一个字段存储hash值,并对其建立索引,插入或者查询的时候利用crc32()这个函数)

要注意hash冲突 所以查询条件加上and id_card='input_id_card_string'

mysql> select field_list from t where id_card_crc=crc32('input_id_card_string') and id_card='input_id_card_string'
 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值