您在這裡

MySQL中合并表需要的一些代碼記錄

James Qi 在 2011年12月25日 - 21:05 發表

  前些天在Drupal網站中為了設法解決服務器性能的問題,實驗了将MySQL中的一些表合并,雖然最後證實這個效果不明顯,但花了好些時間就還是把代碼記錄下來,以備後用。

過程步驟:

  • 備份數據庫
  • 離線狀态
  • 在4個表中創建字段
  • 從3個公用的表複制相應字段内容到新創建的字段中
  • 修改content_node_field、content_node_field_instance中内容
  • 修改content type中field中的computed字段
  • 修改views
  • 修改contemplate模闆
  • 清除緩存
  • 删除3個公用的表
  • 恢複在線狀态

代碼:

  添加字段:

ALTER TABLE `content_type_county` ADD `field_area_of_county_value` LONGTEXT NULL DEFAULT NULL ,
ADD `field_number_of_county_value` LONGTEXT NULL DEFAULT NULL ,
ADD `field_postcode_of_county_value` LONGTEXT NULL DEFAULT NULL

ALTER TABLE `content_type_county` ADD `field_area_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_area_pinyin_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_city_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_city_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_county_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_county_english_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_province_of_county_value` TEXT NULL DEFAULT NULL ,
ADD `field_province_english_of_county_value` TEXT NULL DEFAULT NULL

   複制字段内容:

UPDATE content_type_address,content_field_area_pinyin SET content_type_address.field_area_pinyin_value = content_field_area_pinyin.field_area_pinyin_value WHERE content_type_address.nid=content_field_area_pinyin.nid

  在content_node_field中添加幾行“字段說明”:

INSERT INTO `content_node_field` (`field_name`, `type`, `global_settings`, `required`, `multiple`, `db_storage`, `module`, `db_columns`, `active`, `locked`) VALUES
('field_postcode', 'text', 'a:4:{s:15:"text_processing";s:1:"0";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}', 0, 0, 1, 'text', 'a:1:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}', 1, 0),
('field_area', 'text', 'a:4:{s:15:"text_processing";s:1:"0";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}', 0, 0, 1, 'text', 'a:1:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"big";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}', 1, 0);

  上面基本上記錄了幾種需要的操作代碼,但實際上合并了表後并沒有明顯效果,真正起作用的是為Views涉及到的字段添加索引,代碼如下:

ALTER TABLE `youbianku_chn_test`.`content_type_address` ADD INDEX `field_area_value` ( `field_area_value` ( 72 ) )

  記錄完畢。

自由标簽:

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。