mysql
文章平均质量分 82
camellias_
这个作者很懒,什么都没留下…
展开
-
mysql索引(九)索引合并
索引合并是mysql底层为我们提供的智能算法。了解索引合并的算法,有助于我们更好的创建索引。索引合并是通过多个range类型的扫描并且合并它们的结果集来检索行的。仅合并来自单个表的索引扫描,而不是跨多个表的索引扫描。合并会产生底层扫描的三种形式:unions(合并)、intersections(交集)、unions-of-intersections(先取交集再合并)。以下四个例子会产生索引合并:1、SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;原创 2021-07-22 09:10:28 · 1178 阅读 · 1 评论 -
mysql索引(八)全文索引
Mysql索引大概有五种类型:普通索引(INDEX):最基本的索引,没有任何限制唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原原创 2021-07-20 10:56:17 · 1228 阅读 · 0 评论 -
mysql索引(七)唯一索引
Mysql索引大概有五种类型:普通索引(INDEX):最基本的索引,没有任何限制唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原原创 2021-07-19 11:21:11 · 32595 阅读 · 4 评论 -
mysql索引(六)主键索引
Mysql索引大概有五种类型:普通索引(INDEX):最基本的索引,没有任何限制唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原原创 2021-07-15 09:02:08 · 4898 阅读 · 0 评论 -
mysql索引(五)联合索引
Mysql索引大概有五种类型:普通索引(INDEX):最基本的索引,没有任何限制唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原原创 2021-07-14 11:39:04 · 5153 阅读 · 0 评论 -
mysql索引(四)索引的数据结构HASH
我们常用的索引数据结构比较多的是B+TREE。还有另一种索引数据结构是hash,但是innoDB、mysiam数据引擎不支持hash数据结构。不同的存储引擎支持的索引类型也不一样:InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full原创 2021-07-13 09:27:34 · 868 阅读 · 0 评论 -
mysql索引(三)聚集索引与非聚集索引(辅助索引)
Mysql中常用的两个存储引擎innodb和mysiam的索引是不同的。聚集索引就是以主键创建的索引非聚集索引就是除了主键以外的索引。非聚集索引也叫做二级索引,不用纠结那么多名词,将其等价就行了。非聚集索引在建立的时候也未必是单列的,可以多个列来创建索引。关于mysiam和innoDB的特性及区别,我在下边放了一张图:想了解更多,请移步《mysql(二十八)之MySQL中的锁 — MyISAM引擎》《mysql(二十九)之MySQL中的锁InnoDB引擎》在数据库中,B+树的高度一般都在2到4原创 2021-07-12 17:03:58 · 988 阅读 · 4 评论 -
mysql索引(二)索引的数据结构B+TREE
索引本质上是一种数据结构,让我们在查询数据的时候尽量减少磁盘I/O。前边大概看了索引的原理。数据库的复杂性,以及读取磁盘时,磁盘I/O等。任何一种数据结构都不是凭空产生的,一定会有它的背景和使用场景,我们现在总结一下,我们需要这种数据结构能够做些什么,其实很简单,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生B+树大概就是上边这个玩意。如上图,是一颗b+树,最上层是树根,中间的是树枝,原创 2021-07-05 14:13:12 · 465 阅读 · 2 评论 -
mysql索引(一)索引的原理
之前在学习mysql的时候,对索引有了初步的了解。但是,了解的不是很透,比如说,当时我就不知道,索引其实是一个数据结构。一:索引介绍1:为何要有索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。2:什么是索引?索引在MySQL中也叫做“键”或者"key"(primary key,unique key,还有一个in原创 2021-07-01 08:56:28 · 328 阅读 · 4 评论 -
laravel5.8(二十五)解决使用groupby报错SELECT list is not in GROUP BY clause and contains nonaggregated column
在laravel中数据库查询使用groupby报错:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sns.sns_users.md_img' which is not functionally dependent on columns i原创 2021-06-16 08:37:32 · 1110 阅读 · 0 评论 -
sphinx(八)sphinx增量索引
我服务器上部署的sphinx-for-chinese全文搜索引擎主要是做博客的搜索,数据量不大,因此,这里更新索引每次都是更新所有。但是相对于大数据量来说,每次都全部更新的话,速度可能会比较慢。关于这个问题,sphinx为我们提供了增量索引这个功能。也就是说,我们每次为新增加的数据增加索引,然后和之前的索引再进行合并,这个相对来讲速度比较快。1:创建sphinx索引表,用于记录那些数据已经被创建索引create table sphinx( max_id int unsigned not原创 2020-12-11 14:20:05 · 340 阅读 · 0 评论 -
sphinx(七)sphinx匹配模式
Sphinx匹配模式语法: $sp -> SetMatchMode(常量)SPH_MATCH_ALL 匹配所有词(默认)SPH_MATCH_ANY 匹配一个词SPH_MATCH_PHRASE 匹配整一个词SPH_MATCH_BOOLEAN 将查询看作一个布尔表达式SPH_MATCH_EXTENDED 查询看做一个sphinx的表达式举例: 我喜欢PHP分词: 我 喜欢 PHP准备工作: 先停止服务-> 创建索引->原创 2020-12-10 09:08:12 · 392 阅读 · 0 评论 -
sphinx(六)sphinx 配置文件sphinx.conf配置项全解析
source:数据源,数据是从什么地方来的。index:索引,当有数据源之后,从数据源处构建索引。索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。searchd:提供搜索查询服务。它一般是以deamon的形式运行在后台的。indexer:构建索引的服务。当要重新构建索引的时候,就是调用indexer这个命令。## 数据源src1source src1{ ## 说明数据源的类型。数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,pyt原创 2020-12-09 13:40:11 · 534 阅读 · 0 评论 -
sphinx(五)php执行sphinx更新索引rotate命令
我将sphinx全文检索应用到我的博客中。我这里使用thinkphp5.0框架,其实这玩意跟我用啥框架还真没有啥关系。将sphinxapi.php文件放到你能引用到的地方就好。参照前几篇中的php的demo代码就可以了。当然,上边说的只是PHP中sphinx的使用。执行到这里,我发现了一个小问题:我该如何维护sphinx的索引,说实话,我博客中的数据不多,说维护,其实就是每次生成全部索引就可以了。这样的话,我就可以在更新博客文章的时候,使用PHP执行更新索引的命令就可以了。但是,在使用PHP执原创 2020-12-08 09:08:24 · 352 阅读 · 2 评论 -
sphinx(四)centos7安装sphinx3.3.1
Sphinx使用的版本我是一点点增高的。Coreseek3.2是基于sphinx0.9开发的。Sphinx-for-chinese是基于sphinx2.3.1开发的。我这里尝试一下sphinx的最新版本sphinx3.3.1,当然,这个只做为了解就好,我也只是尝试一下。百度上有提供sphinx+swcs中文分词实现中文全文检索的样例,我没有尝试。有兴趣,请移步百度。1:安装sphinxSphinx官网:http://sphinxsearch.com/安装的文件包也是在官网中。Sphinx3原创 2020-12-07 09:38:49 · 607 阅读 · 0 评论 -
sphinx(一)全文检索引擎sphinx
一:sphinx简介Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用 程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL 也设计了一个存储引擎插件。二:sphinx特性 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒); 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小原创 2020-12-02 11:42:39 · 613 阅读 · 1 评论