Heim > Datenbank > MySQL-Tutorial > mysql中字符串索引问题与例子

mysql中字符串索引问题与例子

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 16:01:54
Original
1412 Leute haben es durchsucht

字符串索引与数字索引有一些方面如果没做好会非常的慢了,今天我们就一起来看看小编整理的一些mysql中字符串索引问题与例子了,因为字符索引相对来说也简单文章就简单的整理了一些例子,希望对各位有帮助。 事情的起因是线上日志发现的mysql慢查询。100万数

   字符串索引与数字索引有一些方面如果没做好会非常的慢了,今天我们就一起来看看小编整理的一些mysql中字符串索引问题与例子了,因为字符索引相对来说也简单文章就简单的整理了一些例子,希望对各位有帮助。

  事情的起因是线上日志发现的mysql慢查询。100万数据量的标准,联合查询全部走索引的情况下,尽然要600多毫秒。很不解,但是将索引列由varchar(50)型改为bigint型后,数据提升了30倍。究其原因就索引树上搜索时要进行大量的比较操作,而字符串的比较比整数的比较耗时的多。

  所以建议一般情况下不要在字符串列建立索引,如果非要使用字符串索引,可以采用以下两种方法:

  1.只是用字符串的最左边n个字符建立索引,推荐n

  2.对字符串使用hash方法将字符串转化为整数,address_key=hashToInt(address),对address_key建立索引,,查询时可以用如下查询where address_key = hashToInt(‘beijing,china’) and address = ‘beijing,china’;

  例子

  我在下列语句中发现了一个问题:

  select * from region where city like "任丘%" limit 10;

  select * from region where city like "商丘%" limit 10;

  这两个语句的结果是一样的,

  类似的情况如下:

  select * from region where city like "临安市%" limit 10;

  select * from region where city like "六安市%" limit 10;

  临海市 龙海市

  枣阳市 益阳市

  温州市 梧州市

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
So ändern Sie MySQL in MySQL
Aus 1970-01-01 08:00:00
0
0
0
MySQL-Startfehler unter Centos
Aus 1970-01-01 08:00:00
0
0
0
MySQL stoppt den Prozess
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage