小编100*_*111的帖子

为什么MySQL的data_free大于数据和索引的组合?

我很难从MySql 5.5数据库中解释以下统计数据.

也许相关的侧面信息:一些表包含列TEXTMEDIUMTEXT列,并且50%它们中的大约有空值.我做optimize了占用大部分空间的桌子.

  1. 问题: 我如何从Mysql文档中理解data_free:分配的空间由DDL当前未使用的空间确定- 因此在行中基本为空值.这种解释是否正确,如果不正确,它如何确切定义的?

  2. 问题: 我不明白data_free如何在索引和数据长度相结合的情况下变得更大

 

select (sum(data_length) + sum(INDEX_LENGTH))/ 1024 / 1024 as total, 
sum(data_free)/ 1024 / 1024  as free ,
sum(data_length)/ 1024 / 1024 as data, 
sum(INDEX_LENGTH/ 1024 / 1024) as index_data 
from information_schema.tables t
where t.TABLE_SCHEMA = 'foo'
Run Code Online (Sandbox Code Playgroud)

结果:

total | free | data | index_data

19.5469   20.0000   18.1875 1.3594
Run Code Online (Sandbox Code Playgroud)

所以我有20MB data_free19.5MB data+index.怎么可能? …

mysql database storage

5
推荐指数
1
解决办法
2609
查看次数

关于连接的mySQL更新查询

我有一个国家数据库和另一个名为区域的表.

Countries 
[id, name, status (1 enabled 0 disabled) ]


Zones 
[id, name, country_id]
Run Code Online (Sandbox Code Playgroud)

我使用以下查询来匹配所有国家/地区的区域.

select 
z.name as state, 
z.id as state_id, 
c.name as country_name, 
c.id as country_id, 
c.status as country_status 
from countries c left join zones z on c.id = z.country_id 
Run Code Online (Sandbox Code Playgroud)

所以基本上简而言之,区域是状态,输出就是这样.

+-----------------------------------------------------+----------+---   -----------------------------------------+------------+----------------+
| state                                               | state_id | country_name                               | country_id | country_status     |
+-----------------------------------------------------+----------+---  -----------------------------------------+------------+----------------+
| NULL                                                |     NULL | Christmas Island                           |         45 |              1   
| NULL                                                |     NULL | Puerto Rico                                |        172 |              1 …
Run Code Online (Sandbox Code Playgroud)

php mysql

3
推荐指数
1
解决办法
39
查看次数

如何使用mysql以"February,Seventeenth 2016"等单词显示日期

我有约会2016-02-17,我正在使用DATE_FORMAT('2016-02-17', '%M, %D %Y')和显示它'february, 17th 2016',但我想显示february, seventeenth 2016,这是17th在言语,请帮助我

mysql

3
推荐指数
1
解决办法
90
查看次数

如何在MySQL中创建具有不相关表的视图

我在 MySQL 中有 4 个不同的表,没有匹配条件和外键,为了某些特殊需求和更好的性能,我需要将所有这些数据重新组合到一个 MySQL 视图中。

这些表的结构类似,如下所示(但请记住,即使相同的字段也没有连接):

table1 (id, name, date, price, description)
table2 (id, type, date, price, note)
table3 (id, name, date, price, note)
table4 (id, name, date, price, description)
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个包含 4 列的视图,对先前表的数据进行分组?我无法使用联接,因为就像我之前所说的那样,这些数据之间没有联系,这就是我对视图持保留态度的原因。我什至无法创建包含所有这些字段的单个表,因为这对于我的应用程序的其余部分来说意味着。

我需要创建 4 个这样的字段:日期、名称、价格、描述。例如,价格将包含表 1.. 到表 4 中每个表的价格。

mysql sql view

2
推荐指数
1
解决办法
642
查看次数

Java MM/dd/yy简单日期DateTimeFormatter的工作时间不超过2037

实际上,我发现MM/dd/yy日期格式有问题:如果输入年份大于37那么年份格式反映为1937.

即,如果我输入输入,02/05/37那么当我将此日期打印到控制台时,日期会变为02/05/1937.

如果他进入不到02/05/37那么工作正常.

Date startDate = new SimpleDateFormat("dd/MM/yy").parse("01/01/47");
System.out.println(startDate);
Run Code Online (Sandbox Code Playgroud)

java date jodatime

2
推荐指数
1
解决办法
1841
查看次数

MySQL:插入...从...中选择重复键

我有表 A中的一条记录:

_____________________________________________________________________________
    Date       |      country        |      channel      |       clicks  
_____________________________________________________________________________
    1-01-2016  |         US          |        MTV        |        100

    1-01-2016  |         US          |        MTV        |         50
_____________________________________________________________________________
Run Code Online (Sandbox Code Playgroud)

我将此记录插入到另一个表 B使用查询:

INSERT INTO B 
SELECT 
  DATE,
  country,
  channel,
  SUM(clicks) AS clicks 
FROM
  A 
GROUP BY DATE,
  country,
  channel;
Run Code Online (Sandbox Code Playgroud)

现在表 B看起来像:

_____________________________________________________________________________
    Date       |      country        |      channel      |       clicks  
_____________________________________________________________________________
    1-01-2016  |         US          |        MTV        |        150
_____________________________________________________________________________
Run Code Online (Sandbox Code Playgroud)

在其他某个时刻,我在表 A 中得到另一条记录

_____________________________________________________________________________
        Date       |      country        |      channel      | …
Run Code Online (Sandbox Code Playgroud)

mysql

2
推荐指数
1
解决办法
5839
查看次数

在 MySQL 中按发送方接收方或接收方发送方分组

我正在尝试制作邮件的收件箱部分。我的问题是这样的。

id userfrom userto

1 a b

2 b a
现在我只需要选择 a 和b之间的一条对话消息我也尝试了一些像这样的 mysql 查询

$query="select * 
        from messages 
        where userfrom='a' || userto='a' 
        group by userto 
        order by id desc"
Run Code Online (Sandbox Code Playgroud)

但它显示了两条对话消息,但我只想显示一条对话消息

php mysql

1
推荐指数
1
解决办法
1023
查看次数

MySQL在同一个表中选择和计数

我有一张完全像这样的桌子

|month|year|candidate_id|emp_id
|    6|2016|10          |5
|    6|2016|11          |5
|    6|2016|12          |5
|    7|2016|13          |5
|    7|2016|14          |5
Run Code Online (Sandbox Code Playgroud)

所以我想计算每个月添加了多少候选人,并显示月、年和候选人总数,如下所示

|Month|Year|Total
|    6|2016|3
|    7|2016|2
Run Code Online (Sandbox Code Playgroud)

我尝试使用这个 sql 脚本

SELECT
    c.MONTH,
    c.YEAR,
    a.total
FROM
    wp_tsf_reports c,
    (
        SELECT
            COUNT(*) total
        FROM wp_tsf_reports b
        WHERE b.emp_id = '5'
        GROUP BY b.MONTH, b.YEAR DESC
    ) a
WHERE
    c.emp_id = '5'
GROUP BY c.MONTH, c.YEAR DESC
Run Code Online (Sandbox Code Playgroud)

这个的输出是

|Month|Year|Total
|    6|2016|3
|    7|2016|3
Run Code Online (Sandbox Code Playgroud)

如您所见,它显示 3 两次,其中第 6 个月的总数应为 3,第 7 个月的总数应为 2。

任何帮助是appriciated

mysql sql

1
推荐指数
1
解决办法
3254
查看次数

查找并删除后面的重复记录

我有一张表约有0.5到100万条记录.该表具有varchar字段的重复记录.

就像是

ID int(11)
TITLE varchar(100)
Run Code Online (Sandbox Code Playgroud)

有许多记录具有重复的TITLE值.

我需要删除重复的记录.第一步是找到它们.我想有两种方法:

  1. 使用 GROUP BY TITLE HAVING COUNT(*) > 1

  2. 使用记录逐个记录SELECT ID, TITLE FROM MY_TABLE,然后为每个记录使用aSELECT ID FROM MY_TABLE WHERE TITLE='".$row['TITLE']." AND ID <> '".$row['ID']."'

问题是哪种方法有效?

或者还有另一种更有效的方法吗?

我使用PHP作为基本语言.

php mysql sql duplicates

1
推荐指数
1
解决办法
87
查看次数

SQL JOIN上的WHERE子句

我有以下查询来返回客户使用的作业(访问)的数量以及他/她使用的不同的兽医.

SELECT 
customer.users_id AS CustID, 
COUNT(VisitID) AS Jobs, 
COUNT(DISTINCT VetID) AS Resources 
FROM customer 
LEFT JOIN visit ON customer.users_id = visit.CustID 
GROUP BY customer.users_id
Run Code Online (Sandbox Code Playgroud)

当我添加一个WHERE子句来计算只有未重新计划或已取消的访问时,我的查询看起来像这样.

SELECT 
customer.users_id AS CustID, 
COUNT(VisitID) AS Jobs, 
COUNT(DISTINCT VetID) AS Resources 
FROM customer LEFT JOIN visit ON customer.users_id = visit.CustID 
WHERE visit.Status != 'Cancelled' AND visit.Status != 'ReScheduled' 
GROUP BY customer.users_id
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,我只会得到没有取消或重新安排访问的客户,虽然我正在为客户使用左连接.

我如何适应WHERE子句呢?

mysql sql join

0
推荐指数
1
解决办法
79
查看次数

标签 统计

mysql ×9

sql ×4

php ×3

database ×1

date ×1

duplicates ×1

java ×1

jodatime ×1

join ×1

storage ×1

view ×1